Mongo db aggregate $elemMatch returns 空集
Mongo db aggregate $elemMatch returns empty set
我正在尝试找出适合我当前案例的查询。
我有 Mongo 个数据库文件,看起来像这样
{
"_id" : ObjectId("627e24df17446e1f646c945c"),
"phone_number" : "041041041",
"country" : "_si",
"blacklisted_service" : {
"all" : false,
"place_order" : false,
"promo_code_sms" : true
},
}
现在我正在尝试查询文档,其中 "phone_number": 041041041
&& "country" : "_si"
AND ("blacklisted_service.all": true
OR "blacklisted_service.promo_code_sms": true
)...
目前我正在尝试使用聚合函数和 $elemMatch 函数来实现我的目标,但我的结果总是空的
db.getCollection("blacklisted_sms").aggregate([
{
$match: {
phone_number: '041041041',
country: '_si',
blacklisted_service: {
$elemMatch: {
'all': true,
$or: [
{
promo_code_sms: true,
}
]
},
}
}
}
]);
你能帮我定义正确的查询吗,如果 phone_number 和国家/地区匹配,除了检查一个 blacklisted_service 键值是否为真之外,这将 return 结果。
如果您有任何其他问题,请告诉我,我会提供。我正在使用 mongo 数据库版本 4.x。提前谢谢你
您可以尝试关注,
db.collection.aggregate([
{
$match: {
$expr: {
$and: [
{ $eq: ["$phone_number", "041041041" ] },
{ $eq: [ "$country", "_si" ] },
{
$or: [
{ $eq: [ "$blacklisted_service.all", true ] },
{ $eq: [ "$blacklisted_service.promo_code_sms", true ] },
]
}
]
}
}
}
])
db.collection.aggregate([
{
$match: {
$and: [
{
"phone_number": "041041041"
},
{
"country": "_si"
},
{
$or: [
{
"blacklisted_service.all": true
},
{
"blacklisted_service.promo_code_sms": true
}
]
}
]
}
}
])
我正在尝试找出适合我当前案例的查询。 我有 Mongo 个数据库文件,看起来像这样
{
"_id" : ObjectId("627e24df17446e1f646c945c"),
"phone_number" : "041041041",
"country" : "_si",
"blacklisted_service" : {
"all" : false,
"place_order" : false,
"promo_code_sms" : true
},
}
现在我正在尝试查询文档,其中 "phone_number": 041041041
&& "country" : "_si"
AND ("blacklisted_service.all": true
OR "blacklisted_service.promo_code_sms": true
)...
目前我正在尝试使用聚合函数和 $elemMatch 函数来实现我的目标,但我的结果总是空的
db.getCollection("blacklisted_sms").aggregate([
{
$match: {
phone_number: '041041041',
country: '_si',
blacklisted_service: {
$elemMatch: {
'all': true,
$or: [
{
promo_code_sms: true,
}
]
},
}
}
}
]);
你能帮我定义正确的查询吗,如果 phone_number 和国家/地区匹配,除了检查一个 blacklisted_service 键值是否为真之外,这将 return 结果。 如果您有任何其他问题,请告诉我,我会提供。我正在使用 mongo 数据库版本 4.x。提前谢谢你
您可以尝试关注,
db.collection.aggregate([
{
$match: {
$expr: {
$and: [
{ $eq: ["$phone_number", "041041041" ] },
{ $eq: [ "$country", "_si" ] },
{
$or: [
{ $eq: [ "$blacklisted_service.all", true ] },
{ $eq: [ "$blacklisted_service.promo_code_sms", true ] },
]
}
]
}
}
}
])
db.collection.aggregate([
{
$match: {
$and: [
{
"phone_number": "041041041"
},
{
"country": "_si"
},
{
$or: [
{
"blacklisted_service.all": true
},
{
"blacklisted_service.promo_code_sms": true
}
]
}
]
}
}
])