使用MongoDB Mongoose驱动程序检索数组中的单个Object

时间:2012-12-22 00:08:57

标签: mongodb mongoose

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

{
    '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下找到name: "John"给出一个位置元素,例如7。 换句话说,找到并返回数组campaign_id中位置7的campaigns

使用mongoose驱动程序:

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});

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

有关如何检索数组内第7位对象的任何建议吗?

1 个答案:

答案 0 :(得分:1)

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

camps.findOne({name: 'John'}, {
    name: 1, 
    'campaigns.campaign_id': 1, 
    campaigns: {$slice: [7, 1]}
}, ...