如何使用 MongoDB Atlas Search 搜索多个 ObjectId

How to search for multiple ObjectIds using MongoDB Atlas Search

我在 MongoDB 集合中有文档引用了不同集合中的 ObjectId。例如,我的订单集合包含带有 CustomerId 的文档。

使用 MongoDB Atlas 搜索,我定义了一个索引,允许我使用以下语法搜索 CustomerId 字段:

{
  "index": "Orders",
  "equals": {
    "path": "CustomerId"
    "value": new ObjectId("5m5....")
  }
}

(以上片段来自我的聚合管道的 $search 阶段。)

但现在我需要使用多个客户 ID 执行 OR 搜索。不幸的是,在使用 equals 运算符时,我不能只指定一个 ObjectId 数组。 https://docs.atlas.mongodb.com/atlas-search/equals/

搜索具有多个 ObjectId 的 MongoDB Atlas Search 索引有哪些选择?

您可以使用带有 should 子句并将 minimumShouldMatch 设置为 1 的复合查询 - https://docs.atlas.mongodb.com/atlas-search/compound/.

一种方法是在 $search 阶段之后进行 $match 阶段。然后可以使用 $in 运算符搜索多个 ObjectId。请注意,此方法对性能有影响,如下所述:

https://docs.atlas.mongodb.com/atlas-search/performance/#-match-aggregation-stage-usage