Reputation: 2309
for aggregate, $cond
can be used to form an if-statement. I'm wonder if there's a similar function for .find()
When I tried using $cond in find(), I get
"unknown top level operator: $cond"
I'm trying to do the following (in pseudo code):
if condition is True:
set filter for find to thing_1
else:
set filter for find to thing_2
Upvotes: 1
Views: 7862
Reputation: 11
If you are on Mongo 3.6 or greater, you could try using the $expr
operator. Which would then allow you to use $cond
.
$expr
Allows the use of aggregation expressions within the query language.
Their example can be found here
db.supplies.find( {
$expr: {
$lt:[ {
$cond: {
if: { $gte: ["$qty", 100] },
then: { $divide: ["$price", 2] },
else: { $divide: ["$price", 4] }
}
},
5 ] }
} )
Upvotes: 1