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配列内のオブジェクトを取得しようとしています。たとえば、位置要素が 7 の場合にunder
を検索したいと思います。つまり、配列の 7 の位置に ある を検索して返します。 campaign_idname: "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 に答える