MongoDB: Use the OR ($or) Operator in Queries?

The OR ($or) operator in MongoDB queries allows a user to specify multiple conditions in a single query with the expectation that at least one condition is true. The operator is also useful for combining multiple queries into a single query where the result of each query is logically ORed together. This operator can be used with other operators to create complex queries and to filter results efficiently.


You can use the $or operator in MongoDB to query for documents that meet one of multiple criteria.

This operator uses the following basic syntax:

db.myCollection.find({
  "$or": [
    {"field1": "hello"},
    {"field2": {$gte : 10}}
  ]
})

This particular example finds all documents in the collection titled myCollection where field1 is equal to “hello” or field2 has a value greater than or equal to 10.

The following examples show how to use this syntax in practice with a collection teams with the following documents:

db.teams.insertOne({team: "Mavs", points: 30, rebounds: 8})
db.teams.insertOne({team: "Mavs", points: 35, rebounds: 12})
db.teams.insertOne({team: "Spurs", points: 20, rebounds: 7})
db.teams.insertOne({team: "Spurs", points: 25, rebounds: 5})
db.teams.insertOne({team: "Spurs", points: 23, rebounds: 9})

Example 1: Use OR Operator with Two Fields

The following code shows how to find all documents in the teams collection where the “team” field is equal to “Spurs” or the value in the “points” field is greater than or equal to 31:

db.teams.find({
  "$or": [
    {"team": "Spurs"},
    {"points": {$gte: 31}}
  ]
})

This query returns the following documents:

{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 } 

Notice that each document in the output contains “Spurs” in the team field or a value greater than or equal to 31 in the points field. 

Example 2: Use OR Operator with More Than Two Fields

The following code shows how to find all documents in the teams collection where the “team” field is equal to “Mavs” or the value in the “points” field is greater than or equal to 25 or the value in the “rebounds” field is less than 8:

db.teams.find({
  "$or": [
    {"team": "Mavs"},
    {"points": {$gte: 25}},
    {"rebounds": {$lt: 8}}
  ]
})

This query returns the following document:

{ _id: ObjectId("62018750fd435937399d6b6e"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

  • The “team” field is equal to “Mavs
  • The “points” field has a value greater than or equal to 25
  • The “rebounds” field has a value less than 8

Note: You can find the complete documentation for the $or function .

The following tutorials explain how to perform other common operations in MongoDB:

MongoDB: How to Use the AND Operator in Queries

MongoDB: How to Query for “not null” in Specific Field

x