系统中存在一个人员集合,如:
{
"_id" : ObjectId("536378bcc9ecd7046700001f"),
"engagements":{
"5407357013875b9727000111" : {
"role" : "ADMINISTRATOR",
},
"5407357013875b9727000222" : {
"role" : "DEVELOPER",
}
}
}
因此,多个用户对象可以与特定角色具有相同的参与度,我需要在此层次结构中触发查询,在该层次结构中,我可以获取具有特定参与人员集合的约定属性的所有人员。
我想得到所有人
参与中5407357013875b9727000222
。
我知道可以使用$in
运算符,但问题是我需要比较子Json约定的键。
答案 0 :(得分:1)
我认为这很简单:
db.users.find({'engagements.5407357013875b9727000222': {$exists: true}})
如果您想与多个互动ID匹配,则必须使用$or
。对不起,此处没有$in
。
但请注意,您需要重新构建数据,因为无法对此数据进行索引以帮助进行此具体查询。在这里,我假设您关心性能,并且经常使用此查询对数据库产生影响。