mongodb - 在mongodb查询中检查数据是否在两个数字之间

标签 mongodb

这是我应该检查条件的 json

[
{
  "name" : "Rice",
  "mintemp" : "22",
  "maxtemp" : "32",
  "minrainfall" : "150",
  "maxrainfall" : "300",
  "soil" : ""
},
{
  "name" : "Wheat",
  "mintemp" : "10",
  "maxtemp" : "16",
  "minrainfall" : "75",
  "maxrainfall" : "100",
  "soil" : ""
},
{
  "name" : "Millets",
  "mintemp" : "27",
  "maxtemp" : "32",
  "minrainfall" : "50",
  "maxrainfall" : "100",
  "soil" : ""
},
{
  "name" : "Grams",
  "mintemp" : "20",
  "maxtemp" : "25",
  "minrainfall" : "40",
  "maxrainfall" : "45",
  "soil" : ""
},
{
  "name" : "Sugar Cane",
  "mintemp" : "21",
  "maxtemp" : "27",
  "minrainfall" : "75",
  "maxrainfall" : "150",
  "soil" : ""
},
{
  "name" : "Cotton",
  "mintemp" : "21",
  "maxtemp" : "30",
  "minrainfall" : "50",
  "maxrainfall" : "75",
  "soil" : ""
},
{
  "name" : "Coffee",
  "mintemp" : "15",
  "maxtemp" : "28",
  "minrainfall" : "150",
  "maxrainfall" : "250",
  "soil" : ""
}
]

写一个查询来显示所有名称,其中 mintemp 应该在 16 到 20 之间,maxtemp 也应该在 16 到 20 之间

预期输出:

[

{
  "name" : "Wheat",
  "mintemp" : "10",
  "maxtemp" : "16",
  "minrainfall" : "75",
  "maxrainfall" : "100",
  "soil" : ""
},
{
  "name" : "Grams",
  "mintemp" : "20",
  "maxtemp" : "25",
  "minrainfall" : "40",
  "maxrainfall" : "45",
  "soil" : ""
},
{
  "name" : "Coffee",
  "mintemp" : "15",
  "maxtemp" : "28",
  "minrainfall" : "150",
  "maxrainfall" : "250",
  "soil" : ""
}
]

用 mongoplayground.net 检查它并发送链接

https://mongoplayground.net/p/jV0e00_FQ_P

上面的链接包含 json,只需键入查询

最佳答案

欢迎来到 StackOverlow!

请注意,JSON 格式确实知道 integer 数据类型。使用以下 JSON 数据:

[
  {
    "name": "Rice",
    "mintemp": 22,
    "maxtemp": 32,
    "minrainfall": 150,
    "maxrainfall": 300,
    "soil": ""
  },
  {
    "name": "Wheat",
    "mintemp": 10,
    "maxtemp": 16,
    "minrainfall": 75,
    "maxrainfall": 100,
    "soil": ""
  },
  {
    "name": "Millets",
    "mintemp": 27,
    "maxtemp": 32,
    "minrainfall": 50,
    "maxrainfall": 100,
    "soil": ""
  },
  {
    "name": "Grams",
    "mintemp": 20,
    "maxtemp": 25,
    "minrainfall": 40,
    "maxrainfall": 45,
    "soil": ""
  },
  {
    "name": "Sugar Cane",
    "mintemp": 21,
    "maxtemp": 27,
    "minrainfall": 75,
    "maxrainfall": 150,
    "soil": ""
  },
  {
    "name": "Cotton",
    "mintemp": 21,
    "maxtemp": 30,
    "minrainfall": 50,
    "maxrainfall": 75,
    "soil": ""
  },
  {
    "name": "Coffee",
    "mintemp": 15,
    "maxtemp": 28,
    "minrainfall": 150,
    "maxrainfall": 250,
    "soil": ""
  }
]

从这里开始,您可以使用以下解决方案来查询数据的范围:

db.collection.find({
  $or: [
    {
      mintemp: {
        $gte: 16,
        $lte: 20
      }
    },
    {
      maxtemp: {
        $gte: 16,
        $lte: 20
      }
    }
  ]
})

请看我的solution proposal .

关于mongodb - 在mongodb查询中检查数据是否在两个数字之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011002/

相关文章:

java - 如何使用 mongodb-java-driver 进行 upsert

javascript - Mongoose /蒙戈 : A query to find all documents older than five minutes?

javascript - 如何使用对象 ID 数组创建 Mongoose 模式?

mongodb - 为一个字段的每个不同值找到第一个文档

mongodb - 蒙哥 {$ne : null} not working as expected

java - MongoDB 从 Object.class 获取 ObjectID

c# - MongoDB Unable to determine the serialization information for the expression 错误

mongodb - HDP沙箱中MongoDB Hadoop连接器故障产生的Hive日志在哪里?

mongodb - Mongo架构效率

r - 如何使用 r 在列表中插入列表