我有一个类似于此的文档:
{
'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位对象的任何建议吗?
答案 0 :(得分:1)
使用$slice
投影运算符执行此操作:
camps.findOne({name: 'John'}, {
name: 1,
'campaigns.campaign_id': 1,
campaigns: {$slice: [7, 1]}
}, ...