查找文档(如果'id'是另一个集合子文档的一部分)



我想在嵌套字段上进行查询的'完全对面'

  • db.inventory.find( { "size.uom": "in" } )

  • 但是 db.inventory.find( { "in": "size.uom" } )


详细说明,我在enter集合中有这样的文档:

{
    "_id" : "iiED3kBWDLenD9fC4",
    "added" : ISODate("2018-04-04T20:32:49.295Z"),
    "teammember" : {
        "member" : [ 
            "JmfSvvP57LwKhRYZZ", 
            "hevxqtcxm3ftKd4ki"
        ]
    }
}

所以如果我们有

var bobyo = enter.teammember.member;
// console.log() give [ 'JmfSvvP57LwKhRYZZ', 'hevxqtcxm3ftKd4ki' ]

如何在user集合中执行查询以查找具有id的用户bobyo的元素之一(false查询,只是为了给出这个想法(:

users.find ({"_id": "bobyo"}, {fields: {"_id": 1}})

返回

users.find ({"_id": "JmfSvvP57LwKhRYZZ"}, {fields: {"_id": 1}})
users.find ({"_id": "hevxqtcxm3ftKd4ki"}, {fields: {"_id": 1}})

编辑/解决方案解决方案是使用运算符中的$。

解决方案是在运算符中使用$。

所以,查询将是:

var bobyo = enter.teammember.member;
var selector = {_id: {$in: bobyo}};
var options = {fields: {_id: 1}};
return users.find(selector, options);

在David Weldon博客(Published Secrets标题(中找到答案(流星特殊情况(。

尝试以下查询

db.users.aggregate([
  { $lookup: {
    from: "enter",
    localField: "_id",
    foreignField: "teammember.member",
    as: "enter"
  }
}])

最新更新