我在MongoDB中有一个集合items
,包含以下文档:
{ name: "A", value: 1 },
{ name: "B", value: 2 },
{ name: "C", value: 3 }
现在,我有几个过滤器,我想应用于搜索第一个文档,它匹配过滤器。有没有办法在一个查询中完成,或者我只需要重复db.items.findOne()
?
我的过滤器是:
{ name: "B" }, // Matches second document.
{ value: 3 }, // Matches third document.
{ $or: [{name: "B"}, {"name": "C"}] } // Matches second document.
结果应该是(包括重复的文件和正确的订单):
{ name: "B", value: 2 },
{ name: "C", value: 3 },
{ name: "B", value: 2 }
您可以使用$facet聚合。
有了这个操作符,你可以同时运行多个查询,如下所示:操场
一旦你得到了你想要的结果,你就可以用$project和$replaceRoot来映射你想要的文档。示例