🌟 Operators Used in MongoDB 🌟
Operators In MongoDB :
1. Comparison Query Operators:
Syntax for comparison query operator :
example :
1. $eq : Matches values that are equal to specified value.
Q. How to retrieve the price of product whose name is iphone 7?
> db.product_catalog.find(
{ “prodname”: { $eq: “iphone 7” } },
{ _id: 0, price: 1,prodname: 1 }
)
2. $gt: Matches values that are greater than specified field value.
Q. How to retrieve the product names having price greater than ‘60000’:
> db.product_catalog.find(
{ price:{$gt:60000} },
{ _id:0,prodname:1 }
)
Similarly, we can use $gte,$lt and $lte.
3. $ne: Matches all values that are not equal to specified value.
Retrieve the documents that have values other than ‘electronics’ for the main category:
> db.product_catalog.find(
{ "categories.main":{$ne:"electronics"} }
)
4. $lt and $gt:
Retrieve the product names having price greater than equal to ‘60000’ and less than ‘70000’.
> db.product_catalog.find(
{ "price":{$gte:60000,$lt:70000} },
{ _id:0,prodname:1 }
)
In this case, we can also use logical operator ‘and’ and ‘nor’ we will discuss in next section.
2. Logical Query Operators:
Syntax for logical operator :
Example :
Q. Retrieve the product names having price greater than equal to ‘60000’ and less than ‘70000’.
- BY ‘and’ operator:
> db.product_catalog.find(
{ $nor: [
{ "price": { $lt: 60000 } },
{ "price": { $gte: 70000 } }
] },
{ _id: 0, prodname: 1 }
)
2. BY ‘nor’ operator:
> db.product_catalog.find(
{ $and: [
{ "price": { $gte: 60000 } },
{ "price": { $lt: 70000 } }
]
},
{ _id: 0, prodname: 1 }
)
Syntax for ‘not’ operator :
example:
Retrieve the products where the ISBN value is not equal to 2343454:
> db.product_catalog.find(
{ ISBN: { $not: { $eq: 2343454 } }
}
)
3. Array Query Operators:
Before Array Operator, we are going to see some arrays example :
- ** Order matters in Array.
1. If you want find exact array match with same order then use this :
Q. Retrieve the products where colors field has exactly two elements — ‘white’ and ‘black’ in the order specified:
> db.product_catalog.find(
{ colors: [“white”, “black”] }
)
there is no exact match in smart phone database.
2. Match specified array elements(without any orders): Using $all operator :
Syntax :
Example:
Q. Retrieve the documents containing both the elements ‘black’ and ‘gold’ in the colors field, irrespective of the order or presence of other elements:
> db.product_catalog.find(
{ colors : { $all : ["black", "gold"] } }
)
OR> db.product_catalog.find(
{ colors : { $all : ["gold", "black"] } }
)
3. Array match specifying the number of elements : Using $size operator
In this case, we can use $size operator :
Example :
Q. Retrieve documents that contain exactly 2 elements for the colors field:
> db.product_catalog.find(
{ colors:{ $size:2 } }
)
4. $elematch operator : Match one or more array elements satisfying the criteria.
Syntax :
Q. Retrieve the documents where revisedYears array field contains atleast one element that is both greater than ‘2015’ and less than or equal to ‘2017’:
> db.product_catalog.find(
{ revisedYears: { $elemMatch: { $gt: 2015, $lte: 2017 } } }
)
we can use $and,$or,$not operator in array too.
If you want to know basics of MongoDB and update operators then you can see this blog of mine.