2016-08-24 87 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 } } 

我想改變group文件看起來像下面

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

回答

2

將您的組陣列到IDS的一個簡單的數組使用進行查找():

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