如何根据现有的mongoose查询来检查单个文档?

我有一个mongoose查询保存在一个variables,然后我有一个随机mongoose文档相同的集合,查询。 我想知道我的文档是否与查询匹配。 我知道我可以在集合上运行查询,然后查看结果集是否包含文档,但是我想保存一些性能并在一个文档上运行它。 这可能吗? 如果是,那么怎么样?

虽然本地查询可能是可能的,但我build议你考虑做这样的事情,如果本地查询是不可能的:

Example .findOne(existingQuery) .where('id').equals(compareTo.id) .select('id') .exec(function(err, doc) { if (!err && doc) { console.log('found it!'); } }); 

你正在比较的文件有一个_id 。 所以,上面我已经通过了你提到的现有查询,并且为随机文档的_id添加了一个检查。 MongoDB应该使用索引(就像您使用_id )然后运行您的查询。 它尽可能less地返回(而不是完整的文档)。

虽然这要求查询对数据库执行,但它只会检查单个文档。

与现有的mongodb工具AFAIK只,你不能这样做。 然而,作为meteor.js框架的一部分,他们有一个名为minimongo的mongodb接口的子集的内存端口,包括大部分的查询语义(我相信,这主要是阅读文章,而不是直接build立这些工具)。 所以理论上你可以把你的文档添加到1个文档的数组(内存中的集合),并用minimongo运行。 如果你尝试这个方法,并在meteor之外工作,让我知道,因为它似乎一般以及testing方便!

另外一个选项可能在事情的macros伟计划中是没有意义的,除非你的主集合是真正的巨大的,但我会提到,因为我相信它是一个有效的select考虑,将插入你的单个文档进入一个新的(由mongodb自动插入)临时收集和查询。