我在 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 }
答案 0 :(得分:0)
您可以使用 $facet 聚合。
使用此运算符,您可以像这样一次运行多个查询:playground
一旦你得到你想要的结果,你就可以用 $project 和 $replaceRoot 根据需要映射文档。 Example