评估 javascript 对象是否匹配 mongo 查询?

Evaluating whether a javascript object matches a mongo query?

我们有一个应用程序,我们在 Mongo 数据库中存储两种类型的文档:

这是数据模型的简化版本:

contacts: [
  { id: 1, name: 'Phil', age: 40 },
  { id: 2, name: 'Bob', age: 34 }
]

filters: [
  { query: { name: 'Phil' } }
  { query: { age: { &gt: 30 } } }
]

给定一个过滤器,列出符合该过滤器的所有联系人相对容易:

db.contacts.find(filter.query);

更难的是找到与特定联系人匹配的所有过滤器。现在我们有如下内容:

matchedFilters = []

_.each(filters, function(filter) {
  if (db.contacts.find(_.extend(filter.query, {id: contact_id}).length > 0) {
    matchedFilters.push(filter.id)
  }
});

本质上,我们需要单独询问 mongo 每个过滤器。这导致对 Mongo.

的大量查询

在我们评估此查询时,我们拥有有关我们试图查找的联系人的所有相关信息。有什么方法可以将 Mongo 查询语法应用于内存中的 Javascript 对象而无需询问 Mongo 吗?

或者,有没有办法让 Mongo 在一次往返中进行大量查询?

看看sift.js。我想,这正是您要找的。

here is a blog post about it.