database - 如何使用 MongoDB 通过传递一个必须至少在文档的特定范围之一内的数字来查找文档?

标签 database mongodb

让我从一个基本示例开始解释这个问题。

给定一个集合,

[
  {
    "name": "A",
    "range": {
      "min": 10,
      "max": 100
    }
  },
  {
    "name": "B",
    "range": {
      "min": 3,
      "max": 50
    }
  }
]

并给出一个数字N。如果我想查找范围包含数字N的文档。我可以使用以下查询,

db.collection.find({
    "range.min": {
        $lte: N
    },
    "range.max": {
        $gte: N
    }
})

效果很好。

但是如果范围变成多个,我不知道如何进行查询。

集合的示例,

[
  {
    "name": "A",
    "ranges": [
      {
        "min": 10,
        "max": 20
      },
      {
        "min": 30,
        "max": 50
      },
      {
        "min": 80,
        "max": 100
      }
    ]
  },
  {
    "name": "B",
    "ranges": [
      {
        "min": 3,
        "max": 10
      },
      {
        "min": 20,
        "max": 50
      }
    ]
  }
]

最佳答案

$elemMatch 运算符可用于解决此问题。

以下查询有效,

db.collection.find({
    "ranges": {
        $elemMatch: {
            "min": {
                $lte: N
            },
            "max": {
                $gte: N
            }
        }
    }
})

关于database - 如何使用 MongoDB 通过传递一个必须至少在文档的特定范围之一内的数字来查找文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69150030/

相关文章:

mysql - 如何在将列导出到 MySQL 之前将 R 中的列转换为 BLOB

asp.net - 如何动态创建数据库表并插入查询选择的数据

sql-server - 当我导出对象时,将与mongodb相同的_id传输到SQL Server数据库

mongodb - 将 isodate 转换为数值

java sql 随机行打印

MySQL 日期范围

database - 连接数据库出错

linux - EC2 上的 mongodb EBS

mongodb - 如何为 MongoDB 中的嵌入式文档创建唯一 ID?

Mongodb:按日期计算项目然后计算唯一项目