不 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
元素之一的用户(错误查询,只是为了提出这个想法):
users.find ({"_id": "bobyo"}, {fields: {"_id": 1}})
返回
users.find ({"_id": "JmfSvvP57LwKhRYZZ"}, {fields: {"_id": 1}})
users.find ({"_id": "hevxqtcxm3ftKd4ki"}, {fields: {"_id": 1}})
修改/溶液 解决方案是使用$in运算符。
答案 0 :(得分:0)
尝试以下查询
db.users.aggregate([
{ $lookup: {
from: "enter",
localField: "_id",
foreignField: "teammember.member",
as: "enter"
}
}])
答案 1 :(得分:0)
解决方案是使用$in运算符。
所以,查询将是:
var bobyo = enter.teammember.member;
var selector = {_id: {$in: bobyo}};
var options = {fields: {_id: 1}};
return users.find(selector, options);
在David Weldon blog(Published Secrets
标题)中找到答案(Meteor特殊情况)。