MongoDB:如何在对象数组中找到_id $?

时间:2016-08-24 16:23:51

标签: arrays mongodb

我有一个"组"集合来自另一个"项目"采集。 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: '...' }
  ]
}

1 个答案:

答案 0 :(得分:2)

将您的组数组转换为一个简单的ID数组,用于find():

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