How to use logical operators in MongoDB to filter data

Document-oriented database, MongoDB is a type of NoSQL database. Different types of operators are available in MongoDB for usage when interacting with the database. In this answer, we'll learn about logical operators in MongoDB.

Logical operators are used to compare and evaluate query conditions. They work as a conjunction for joining multiple conditions. These operators are mostly used for controlling the flow of the code. They return true or false depending upon the given query.

MongoDB provides four types of logical operators:

  1. $and

  2. $not

  3. $or

  4. $nor

We'll use the following database to perform different logical operators where the database name is educative and has a collection named courses.

use educative //selecting our database
db.courses.find({}) //query
//output
[
{ _id: 10, course_name: 'python', hours: 10 },
{ _id: 11, course_name: 'C++', hours: 15 },
{ _id: 12, course_name: 'java', hours: 12 }
]

Note: Learn more about comparison operators in MongoDB.

The $and operator

It performs the logical AND operation on the expression or array of expressions. It combines two or more queries and returns the document that matches all the given conditions.

//query
db.courses.find({ $and: [{"course_name": "java"}, {"_id": {$gte: 12}}]}).pretty()
//output
[ { _id: 12, course_name: 'java', hours: 12 } ]

The $not operator

It inverts the operation of a query expression. It returns the documents that fail to match the given query expression.

//query
db.courses.find({ "_id": { $not: { $gte: 11}}})
//output
[ { _id: 10, course_name: 'python', hours: 10 } ]

The $or operator

It joins two or more query clauses with the logical OR operator. It returns all documents that match the conditions of either given query clause.

//query
db.courses.find({ $or: [{"course_name": "java"}, {"_id": {$eq: 11}}]}).pretty()
//output
[
{ _id: 11, course_name: 'C++', hours: 15 },
{ _id: 12, course_name: 'java', hours: 12 }
]

The $nor operator

It is the opposite of the $or operator. It joins two or more query clauses with a logical OR operator. It returns all documents that don't match the conditions of either given query clause.

//query
db.courses.find({ $nor: [{"course_name": "java"}, {"_id": {$eq: 11}}]}).pretty()
//output
[ { _id: 10, course_name: 'python', hours: 10 } ]

Run your queries

We can run all the aforementioned MongoDB queries in the terminal below:

Terminal 1
Terminal
Loading...

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved