在 MongoDB 中多次查找

时间:2021-08-01 17:51:30

标签: database mongodb match

我在 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 }

1 个答案:

答案 0 :(得分:0)

您可以使用 $facet 聚合。

使用此运算符,您可以像这样一次运行多个查询:playground

一旦你得到你想要的结果,你就可以用 $project 和 $replaceRoot 根据需要映射文档。 Example