How to Use Range Queries in MongoDB

Avatar

By squashlabs, Last Updated: October 27, 2023

How to Use Range Queries in MongoDB

MongoDB is a popular NoSQL database that allows for flexible and efficient querying of data. One common type of query is the range query, which allows you to retrieve documents that fall within a specified range of values. Range queries can be performed on various data types, including numbers, strings, and dates.

Performing Range Queries with MongoDB Find

The find() method is used to query documents in a collection. To perform a range query, you can use the $gte and $lte operators to specify the lower and upper bounds of the range, respectively.

Here’s an example of a range query using the find() method to retrieve all documents with a field age greater than or equal to 25:

db.users.find({ age: { $gte: 25 } })

This query will return all documents in the users collection where the age field is greater than or equal to 25.

You can also combine multiple range queries using the $and operator. For example, to retrieve documents with a field age between 25 and 30, you can use the following query:

db.users.find({ $and: [{ age: { $gte: 25 } }, { age: { $lte: 30 } }] })

This query will return all documents in the users collection where the age field is greater than or equal to 25 and less than or equal to 30.

Related Article: Tutorial: Using Python to Interact with MongoDB Collections

Exploring Range Queries with the $gte Operator

The $gte operator allows you to match values that are greater than or equal to a specified value. It can be used in range queries to retrieve documents that fall within a specified range.

Here’s an example of a range query using the $gte operator to retrieve all documents with a field price greater than or equal to 100:

db.products.find({ price: { $gte: 100 } })

This query will return all documents in the products collection where the price field is greater than or equal to 100.

You can also use the $gte operator with other query operators, such as $and and $or, to create more complex range queries. For example, to retrieve documents with a field price greater than or equal to 100 and less than or equal to 200, you can use the following query:

db.products.find({ $and: [{ price: { $gte: 100 } }, { price: { $lte: 200 } }] })

This query will return all documents in the products collection where the price field is greater than or equal to 100 and less than or equal to 200.

The $lte Operator

The $lte operator is used to match values that are less than or equal to a specified value. It can be used in range queries to retrieve documents that fall within a specified range.

Here’s an example of a range query using the $lte operator to retrieve all documents with a field quantity less than or equal to 10:

db.products.find({ quantity: { $lte: 10 } })

This query will return all documents in the products collection where the quantity field is less than or equal to 10.

You can also use the $lte operator with other query operators, such as $and and $or, to create more complex range queries. For example, to retrieve documents with a field quantity greater than or equal to 5 and less than or equal to 10, you can use the following query:

db.products.find({ $and: [{ quantity: { $gte: 5 } }, { quantity: { $lte: 10 } }] })

This query will return all documents in the products collection where the quantity field is greater than or equal to 5 and less than or equal to 10.

Querying MongoDB for Values within a Specific Range

You can also query for values within a specific range by combining the $gte and $lte operators. This allows you to retrieve documents that fall within a specified range of values.

Here’s an example of a range query to retrieve all documents with a field score between 80 and 90:

db.students.find({ score: { $gte: 80, $lte: 90 } })

This query will return all documents in the students collection where the score field is greater than or equal to 80 and less than or equal to 90.

You can also use the $and operator to combine multiple range queries. For example, to retrieve documents with a field price between 100 and 200 and a field quantity between 5 and 10, you can use the following query:

db.products.find({ $and: [{ price: { $gte: 100, $lte: 200 } }, { quantity: { $gte: 5, $lte: 10 } }] })

This query will return all documents in the products collection where the price field is between 100 and 200, and the quantity field is between 5 and 10.

Related Article: Exploring MongoDB: Does it Load Documents When Querying?

Using Range Queries on Dates

MongoDB supports range queries on dates, allowing you to retrieve documents that fall within a specified range of dates. Date range queries can be useful when working with time-based data, such as event logs or sensor readings.

Here’s an example of a range query to retrieve all documents with a field date between two specific dates:

db.events.find({ date: { $gte: ISODate("2022-01-01"), $lte: ISODate("2022-01-31") } })

This query will return all documents in the events collection where the date field is greater than or equal to January 1, 2022, and less than or equal to January 31, 2022.

You can also use other date operators, such as $gt and $lt, to create more specific date range queries. For example, to retrieve documents with a field date greater than January 1, 2022, and less than January 31, 2022, you can use the following query:

db.events.find({ date: { $gt: ISODate("2022-01-01"), $lt: ISODate("2022-01-31") } })

This query will return all documents in the events collection where the date field is greater than January 1, 2022, and less than January 31, 2022.

Performing Range Queries on Multiple Fields

You can perform range queries on multiple fields by combining the $and operator with multiple range conditions. This allows you to retrieve documents that fall within a specified range of values for multiple fields.

Here’s an example of a range query to retrieve all documents with a field price between 100 and 200 and a field quantity between 5 and 10:

db.products.find({ $and: [{ price: { $gte: 100, $lte: 200 } }, { quantity: { $gte: 5, $lte: 10 } }] })

This query will return all documents in the products collection where the price field is between 100 and 200, and the quantity field is between 5 and 10.

You can combine multiple range queries on different fields using the $and operator to create more complex range conditions. For example, to retrieve documents with a field age between 18 and 30 and a field income between 50000 and 100000, you can use the following query:

db.users.find({ $and: [{ age: { $gte: 18, $lte: 30 } }, { income: { $gte: 50000, $lte: 100000 } }] })

This query will return all documents in the users collection where the age field is between 18 and 30, and the income field is between 50000 and 100000.

Additional Resources

MongoDB

More Articles from the NoSQL Databases Guide series:

Crafting Query Operators in MongoDB

This tutorial provides a practical guide on creating and implementing query operators in MongoDB. The article covers various topics such as understanding MongoDB query... read more

MongoDB Queries Tutorial

MongoDB is a powerful NoSQL database that offers flexibility and scalability. In this article, we delve into the modifiability of MongoDB queries, investigating whether... read more

Using Multi-Indexes with MongoDB Queries

MongoDB queries can benefit from the usage of multiple indexes, allowing for improved performance and optimization. This article explores various aspects of multi-index... read more

How to Add a Field with a Blank Value in MongoDB

Adding a field with a blank value in a MongoDB query is a process. This article will guide you through the syntax for adding a field with a blank value, updating a... read more

How to Run Geospatial Queries in Nodejs Loopback & MongoDB

Executing geospatial queries with Loopback MongoDB is a crucial skill for software engineers. This article provides insight into geospatial queries, how Loopback... read more

Tutorial: MongoDB Aggregate Query Analysis

Analyzing MongoDB aggregate queries is essential for optimizing database performance. This article provides an overview of the MongoDB Aggregation Pipeline and explores... read more