我想在嵌套字段上进行查询的'完全对面'
-
不
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"
}
}])