评估 javascript 对象是否匹配 mongo 查询?
Evaluating whether a javascript object matches a mongo query?
我们有一个应用程序,我们在 Mongo 数据库中存储两种类型的文档:
contacts
,基本代表人
filters
,本质上是一个存储的 MongoDB 查询,表示用户的 "saved search"。
这是数据模型的简化版本:
contacts: [
{ id: 1, name: 'Phil', age: 40 },
{ id: 2, name: 'Bob', age: 34 }
]
filters: [
{ query: { name: 'Phil' } }
{ query: { age: { >: 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。我想,这正是您要找的。
我们有一个应用程序,我们在 Mongo 数据库中存储两种类型的文档:
contacts
,基本代表人filters
,本质上是一个存储的 MongoDB 查询,表示用户的 "saved search"。
这是数据模型的简化版本:
contacts: [
{ id: 1, name: 'Phil', age: 40 },
{ id: 2, name: 'Bob', age: 34 }
]
filters: [
{ query: { name: 'Phil' } }
{ query: { age: { >: 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。我想,这正是您要找的。