1

我有一个与此类似的文档:

{
    'user_id':'{1231mjnD-32JIjn-3213}',
    'name':'John',
    'campaigns':
        [
            {
                'campaign_id':3221,
                'start_date':'12-01-2012',
                'worker_id': '00000'
            },
            {
                'campaign_id':3222,
                'start_date':'13-01-2012',
                'worker_id': '00000'
            },
            ...
            etc
            ...
        ]
}

我正在尝试检索campaigns数组中的对象。
例如,我想在给定的位置元素campaign_id下找到,比如 7。 换句话说,找到并返回数组中位置 7 的位置。 name: "John"
campaign_idcampaigns

使用猫鼬驱动程序:

camps.findOne({name: 'John'}, {name: 1, "campaigns.7.campaign_id": 1}, function(err, camp) {etc});
camps.findOne({name: 'John'}, {name: 1, "campaigns[7].campaign_id": 1}, function(err, camp) {etc});

在这里,我试图"campaigns.7.campaign_id": 1在位置 7检索。
不幸的是,这不会返回特定的campaign_id.

关于如何在数组内的位置 7 检索对象的任何建议?

4

1 回答 1

1

使用$slice投影运算符执行此操作:

camps.findOne({name: 'John'}, {
    name: 1, 
    'campaigns.campaign_id': 1, 
    campaigns: {$slice: [7, 1]}
}, ...
于 2012-12-22T00:23:53.907 回答