如何使用 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
我在 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