2016-08-24 6 views
0

私は別の「アイテム」コレクションのドキュメントをグループ化する「グループ」コレクションを持っています。 groupコレクションは、単にitemコレクションのObjectIdの配列ですが、group配列のオブジェクトをより複雑にして、さらに$in$ninの演算子を使用できるようにしたいと考えています。

$in演算子で使用される値をObjectIdだけでなくオブジェクトに変更するときに、$inを使用するにはどうすればよいですか?

// current group document 
{ 
    _id: ObjectId(...), 
    items: [ 
    ObjectId(...), 
    ObjectId(...) 
    ] 
} 
// current item find query 
db.item.find({ _id : { $in: group.items } } 

私はあなたのfind()で使用するIDの単純な配列にあなたのグループの配列を変換し、次の

{ 
    _id: ObjectId(...), 
    items: [ 
    { _id : ObjectId(...), name: '...' }, 
    { _id : ObjectId(...), name: '...' } 
    ] 
} 

答えて

2

に見えるようにgroup文書を変更したい:

// revised item find logic 
var itemGroupItemIds = group.items.map(function(item){ 
    return item._id 
}); 
db.item.find({ _id : { $in: itemGroupItemIds } }); 
関連する問題