我有一个"group“集合,它对来自另一个"item”集合的文档进行分组。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: '...' }
]
}发布于 2016-08-25 00:51:25
将组数组转换为简单的ids数组,以供find()使用:
// revised item find logic
var itemGroupItemIds = group.items.map(function(item){
return item._id
});
db.item.find({ _id : { $in: itemGroupItemIds } });https://stackoverflow.com/questions/39128509
复制相似问题