使用$ in或$ gt,$ lt($ gte,$ lte)更好吗?

时间:2019-02-12 17:04:25

标签: mongodb indexing mongodb-query

考虑一个带有age字段的集合。 age的值来自Integer值的已知范围。

查询年龄在20到23岁之间的用户时,查询可以写为:

"age": {
    "$gte": 20
    "$lte": 23,
},

由于我们知道年龄范围,因此查询也可以写为:

"age": {
    "$in": [20,21,22,23]
},

使用$in$gte$lte时查询性能是否更好?

1 个答案:

答案 0 :(得分:1)

当阵列较小时,我认为$in$gte之间的性能差异不大。显然,当您在$in运算符中使用包含大量元素的数组时,最好使用$gte,因为mongo不需要将一个值与数组中的每个值进行比较,使用条件表达式与两个值。此外,为了提高可读性,最好使用$gte$lte。因此,在通常情况下,我会使用$gte$lte