考虑一个带有age
字段的集合。 age
的值来自Integer
值的已知范围。
查询年龄在20到23岁之间的用户时,查询可以写为:
"age": {
"$gte": 20
"$lte": 23,
},
由于我们知道年龄范围,因此查询也可以写为:
"age": {
"$in": [20,21,22,23]
},
使用$in
或$gte
,$lte
时查询性能是否更好?
答案 0 :(得分:1)
当阵列较小时,我认为$in
和$gte
之间的性能差异不大。显然,当您在$in
运算符中使用包含大量元素的数组时,最好使用$gte
,因为mongo不需要将一个值与数组中的每个值进行比较,使用条件表达式与两个值。此外,为了提高可读性,最好使用$gte
和$lte
。因此,在通常情况下,我会使用$gte
和$lte
。