gpt4 book ai didi

mongodb - 带有 $in 或 $or 的索引

转载 作者:可可西里 更新时间:2023-11-01 10:24:02 26 4
gpt4 key购买 nike

我的文档结构是这样的

{
_id: "id1",
field1: "val1",
field2: "val2",
outcome: "ABC"
}

我在结果字段上创建了索引。我必须找到仅包含 {outcome:"ABC"}{outcome:"XYZ"} 的所有文档。如果我使用 $or$in,查询执行时间没有重大差异。例如

db.coll.find({$or:[{outcome:"ABC"},{outcome:"XYZ"}]}); 
db.coll.find({outcome:{$in:["ABC","XYZ"]}});

在这种情况下,我应该使用哪个运算符 $or$in?为什么?任何帮助,将不胜感激。

最佳答案

MongoDB docs

When using $or with <expressions> that are equality checks for the value of the same field, use the $in operator instead of the $or operator.

For example, to select all documents in the inventory collection where the quantity field value equals either 20 or 50, use the $in operator:

db.inventory.find ( { quantity: { $in: [20, 50] } } )

所以在你的情况下最好使用

db.coll.find({outcome:{$in:["ABC","XYZ"]}});

关于mongodb - 带有 $in 或 $or 的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35724342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com