I’m trying to figure out what is the proper query for my current case.
I have Mongo db documents, which looks like this
{
"_id" : ObjectId("627e24df17446e1f646c945c"),
"phone_number" : "041041041",
"country" : "_si",
"blacklisted_service" : {
"all" : false,
"place_order" : false,
"promo_code_sms" : true
},
}
Now I’m trying to query documents, where "phone_number": 041041041
&& "country" : "_si"
AND ("blacklisted_service.all": true
OR "blacklisted_service.promo_code_sms": true
)…
Currently I’m trying to achieve my goal with aggregate & $elemMatch functions, but my results are always empty
db.getCollection("blacklisted_sms").aggregate([
{
$match: {
phone_number: '041041041',
country: '_si',
blacklisted_service: {
$elemMatch: {
'all': true,
$or: [
{
promo_code_sms: true,
}
]
},
}
}
}
]);
Can you please help me define proper query, which will return a result if phone_number and country match in addition to check if one blacklisted_service key value is true.
If you have any additional questions, please let me know and I will provide. I’m using mongo DB versions 4.x. Thank you in advance
2
Answers
You can try following,
Working Mongo playground