我的mongo数据库中有一个群组集合,我将群组成员存储在嵌入式列表中:
{ _id: 9876,
name: group138,
members: [{ login: user1, password: user1pass},
{ login: user2, password: user2pass}],
path: '/group1/group13/',
}
(为了处理组层次结构,我使用具有物化路径的模型树结构(http://docs.mongodb.org/manual/tutorial/model-tree-structures-with-materialized-paths/))。
我想找到一种方法让属于这个组的几个用户进入同一个集合,以避免多个数据库查询(和回调调用)。
当用户登录时,我需要检索他和他所属的群组。我只是想通了我不能同时用他的登录名和密码查询用户:
db.groups.find({$and: [{"members.login": "user1pass"}, {"members.password" : "user2pass"}]})
返回不应该返回的记录,因为密码不正确。如何执行正确的请求以检查登录名和密码?
答案 0 :(得分:1)
您可以通过所需的子文档找到:
db.groups.find({members: {login: "user1", password: "user1pass"}})
答案 1 :(得分:1)
使用$elemMatch
匹配单个数组元素的多个属性:
db.groups.find({members: {$elemMatch: {login: "user1", password: "user1pass"}}});