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

时间:2013-11-03 18:31:46

标签: node.js mongodb mongoose

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

2 个答案:

答案 0 :(得分:1)

AFAIK只使用现有的mongodb工具,你不能这样做。但是,作为meteor.js framework的一部分,他们有一个名为minimongo的mongodb接口子集的内存端口,包括大多数查询语义(我相信,这主要来自阅读文章而不是用这些工具指导建设经验)。因此理论上你可以将你的文档添加到1文档数组(内存中的集合)中,并使用minimongo运行它。如果你尝试并让它在流星之外工作,请告诉我,因为它看起来很方便,也适合测试!

除非你的主要系列真的很棒,否则另外一个选项在宏观方案中可能没有意义,但我会提到因为我认为它是一个有效的选择,可以插入将您的单个文档转换为新的(由mongodb插入时自动处理)临时收集和查询。

答案 1 :(得分:1)

虽然可能有本地查询,但如果无法进行本地查询,我建议你考虑这样做:

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),然后运行您的查询。它尽可能少地返回(而不是完整的文档)。

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