代码之家  ›  专栏  ›  技术社区  ›  Manuel

使用$in还是$gt、$lt($gte、$lte)更好?

  •  1
  • Manuel  · 技术社区  · 6 年前

    考虑一个集合 age 字段。 age Integer 值:

    查询20-23岁用户时,可写为:

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

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

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Guseyn Ismayylov    6 年前

    我不认为两者在性能上有很大的区别 $in $gte 当你有小阵列的时候。显然,当您在 >$in->code>operator中使用具有大量元素的数组时,最好使用 >$gte->code>,因为mongo不需要将一个值与数组中的每个值进行比较,只需使用两个值的条件表达式就可以更快。关于可读性的更多信息,最好使用 >$gte $lte . 因此,在通常情况下,我会使用 >$gte >$lte