[英]Evaluating whether a javascript object matches a mongo query?
我们有一个应用程序,我们在Mongo数据库中存储两种类型的文档:
contacts
,基本上代表人 filters
,本质上是一个存储的MongoDB查询,代表用户的“已保存搜索”。 以下是数据模型的简化版本:
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。 我想,这正是你要找的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.