3

This is the json where i should check condition

[
{
  "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" : ""
}
]

Write a query to display all the name where mintemp should be between 16 to 20 and maxtemp also should be between 16 to 20

Expected Output :

[

{
  "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" : ""
}
]

Check it with mongoplayground.net and send the link

https://mongoplayground.net/p/jV0e00_FQ_P

above link contains the json and just type only query

1
  • Thanks for introducing me to mongoplayground.net :) Commented Aug 24, 2018 at 23:01

1 Answer 1

6

welcome to StackOverlow!

Please notice, that the JSON format does know the integer data type. Using the following JSON data:

[
  {
    "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": ""
  }
]

From here on, you can use the following solution to query your data for ranges:

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

Please see my solution proposal.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.