我有一系列具有以下结构的联系人:
{
"_id": "58f969646320ef4b5171dfe2",
"user_id": 1170,
"others": {
"campaigns": [
{
"campaign_id": 111,
"is_attendee": true,
"score": 25,
},
{
"campaign_id": 112,
"is_attendee": false,
"score": 22,
}
]
},
}
我想返回属于用户1170的联系人,但只投影在[111,119]中具有ID的第一个广告系列,因此我做了以下查询:
db.contacts.find({
"others.campaigns.user_id": 1170
}, {
"others.campaigns": {
$elemMatch: {
"campaign_id": {$in: [111, 119]}
}
},
{
"others.campaigns.$": 1
}
).limit(1).pretty()
但是我收到了这个错误:
error: {
"ok" : 0,
"errmsg" : "Cannot use $elemMatch projection on a nested field.",
"code" : 2,
"codeName" : "BadValue"
}
那么,有没有办法让查询成功运行?
请:弃用聚合框架作为可能的解决方案。