【问题标题】:Mongodb query: find documents having all elements of array in a given rangeMongodb查询:查找具有给定范围内所有数组元素的文档
【发布时间】:2021-03-16 17:51:01
【问题描述】:

假设我有一个集合,其文档具有这种结构

{
   ...
   "ts": [NumberLong("5"), NumberLong("7")]
   ...
}

其中ts 是一个由两个Long 元素组成的数组,其中第二个元素严格大于第一个元素。

我想检索数组ts 的所有元素都在一个范围内(大于一个值但小于另一个值)的所有文档。

假设范围在49之间;我正在尝试这个查询,但我发现了意想不到的结果:

db.segments.find({$nor: [{ "ts": {$gt:9, $lt:4}}]}).toArray()

【问题讨论】:

    标签: database mongodb mongodb-query


    【解决方案1】:

    如果你有固定数量的数组长度,那么你可以在查询部分使用数组的索引,

    db.segments.find({
      "ts.0": { $gt: 4 },
      "ts.1": { $lt: 9 }
    }).toArray()
    

    Playground

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 2014-12-11
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多