无法在嵌套字段上使用$ elemMatch投影

时间:2017-05-25 23:17:11

标签: mongodb

我有一系列具有以下结构的联系人:

{
    "_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"
}

那么,有没有办法让查询成功运行?

请:弃用聚合框架作为可能的解决方案。

0 个答案:

没有答案