$cond operator has the keyword "if", "then"
and "else", using this operator we can perform if/else in MongoDB query.
See the following example:
Use Test
|
db.Users.insert(
{
"fName" : "Dilip",
"lName" : "Singh",
"address" : "Noida",
"totalOrder" : 150,
"createdDate" : "2014/07/07"
})
db.Users.insert(
{
"fName" : "Vipul",
"lName" : "Bhatt",
"address" : "Delhi",
"totalOrder" : 50,
"createdDate" : "2013/07/07"
})
db.Users.insert(
{
"fName" : "Brijesh",
"lName" : "Kumar",
"address" : "Gorakhpur",
"totalOrder" : 70,
"createdDate" : "2012/07/07"
})
db.Users.insert(
{
"fName" : "Raj",
"lName" : "Kumar",
"address" : "Bokaro",
"totalOrder" : 40,
"createdDate" : "2010/07/07"
})
db.Users.find()
|
Output
/* 0 */
{
"_id" : ObjectId("55dac0b31c949abf34d5daed"),
"fName" : "Dilip",
"lName" : "Singh",
"address" : "Noida",
"totalOrder" : 150,
"createdDate" : "2014/07/07"
}
/* 1 */
{
"_id" : ObjectId("55dac0c21c949abf34d5daf1"),
"fName" : "Vipul",
"lName" : "Bhatt",
"address" : "Delhi",
"totalOrder" : 50,
"createdDate" : "2013/07/07"
}
/* 2 */
{
"_id" : ObjectId("55dac0d11c949abf34d5daf2"),
"fName" : "Brijesh",
"lName" : "Kumar",
"address" : "Gorakhpur",
"totalOrder" : 70,
"createdDate" : "2012/07/07"
}
/* 3 */
{
"_id" : ObjectId("55dac0e31c949abf34d5daf3"),
"fName" : "Raj",
"lName" : "Kumar",
"address" : "Bokaro",
"totalOrder" : 40,
"createdDate" : "2010/07/07"
}
|
Now we apply query if the user has totalOrder more than 100 so his User Type will be Gold else Silver. See the following query.
db.Users.aggregate(
[{
$project :
{
fName:1,
totalOrder:1,
UserType:{
$cond:{
if:{$gte:["$totalOrder",100]},
then:"gold",
else:"Silver"
}
}
}
}])
|
Output
/* 0 */
{
"result" : [
{
"_id" :
ObjectId("55dac0b31c949abf34d5daed"),
"fName" :
"Dilip",
"totalOrder" : 150,
"UserType" :
"gold"
},
{
"_id" :
ObjectId("55dac0c21c949abf34d5daf1"),
"fName" : "Vipul",
"totalOrder" : 50,
"UserType" :
"Silver"
},
{
"_id" :
ObjectId("55dac0d11c949abf34d5daf2"),
"fName" :
"Brijesh",
"totalOrder" : 70,
"UserType" :
"Silver"
},
{
"_id" :
ObjectId("55dac0e31c949abf34d5daf3"),
"fName" :
"Raj",
"totalOrder" : 40,
"UserType" :
"Silver"
}
],
"ok" : 1
}
|