Summary: in this tutorial, you’ll about the MongoDB $or
operator and how to use it to perform a logical OR operation.
Introduction to the MongoDB $or operator
The $or
is a logical query operator that carries a logical OR operation on an array of one or more expressions and selects the documents that satisfy at least one expression.
Here is the syntax of the $or
operator:
Code language: PHP (php)$or:[{expression1}, {expression2},...]
MongoDB $or operator examples
We’ll use the following products
collection:
db.products.insertMany([
{ "_id" : 1, "name" : "xPhone", "price" : 799, "releaseDate" : ISODate("2011-05-14T00:00:00Z"), "spec" : { "ram" : 4, "screen" : 6.5, "cpu" : 2.66 }, "color" : [ "white", "black" ], "storage" : [ 64, 128, 256 ] },
{ "_id" : 2, "name" : "xTablet", "price" : 899, "releaseDate" : ISODate("2011-09-01T00:00:00Z"), "spec" : { "ram" : 16, "screen" : 9.5, "cpu" : 3.66 }, "color" : [ "white", "black", "purple" ], "storage" : [ 128, 256, 512 ] },
{ "_id" : 3, "name" : "SmartTablet", "price" : 899, "releaseDate" : ISODate("2015-01-14T00:00:00Z"), "spec" : { "ram" : 12, "screen" : 9.7, "cpu" : 3.66 }, "color" : [ "blue" ], "storage" : [ 16, 64, 128 ] },
{ "_id" : 4, "name" : "SmartPad", "price" : 699, "releaseDate" : ISODate("2020-05-14T00:00:00Z"), "spec" : { "ram" : 8, "screen" : 9.7, "cpu" : 1.66 }, "color" : [ "white", "orange", "gold", "gray" ], "storage" : [ 128, 256, 1024 ] },
{ "_id" : 5, "name" : "SmartPhone", "price" : 599, "releaseDate" : ISODate("2022-09-14T00:00:00Z"), "spec" : { "ram" : 4, "screen" : 9.7, "cpu" : 1.66 }, "color" : [ "white", "orange", "gold", "gray" ], "storage" : [ 128, 256 ] }
])
Code language: JavaScript (javascript)
1) Using MongoDB $or operator example
The following example uses the $or
operator to select all documents in the products
collection where the value in the price field equals 799 or 899:
db.products.find({
$or: [{
price: 799
}, {
price: 899
}]
}, {
name: 1,
price: 1
})
Code language: PHP (php)
It returned the following documents:
[
{ _id: 1, name: 'xPhone', price: 799 },
{ _id: 2, name: 'xTablet', price: 899 },
{ _id: 3, name: 'SmartTablet', price: 899 }
]
Code language: JavaScript (javascript)
Since this example checks equality for the same price field, you should use the $in operator instead:
db.products.find({
price: {
$in: [799, 899]
}
}, {
name: 1,
price: 1
})
Code language: CSS (css)
2) Using MongoDB $or operator to select documents where the value of a field is in a range
The following example uses the $or
operator to select all documents where the price is less than 699 or greater than 799:
db.products.find({
$or: [
{ price: {$lt: 699} },
{ price: {$gt: 799} }
]
}, {
name: 1,
price: 1
})
Code language: PHP (php)
Output:
[
{ _id: 2, name: 'xTablet', price: 899 },
{ _id: 3, name: 'SmartTablet', price: 899 },
{ _id: 5, name: 'SmartPhone', price: 599 }
]
Code language: JavaScript (javascript)
Summary
- Use the MongoDB
$or
operator to perform a logical OR operation on a list of expressions and select documents that satisfy at least one expression.