0

我的 mongo db 中有一个组集合,我将组的成员存储在嵌入列表中:

      { _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"}]})

返回不应返回的记录,因为密码不正确。如何执行正确的请求以检查登录名和密码?

4

2 回答 2

2

用于$elemMatch匹配单个数组元素的多个属性:

db.groups.find({members: {$elemMatch: {login: "user1", password: "user1pass"}}});
于 2013-07-02T21:38:30.920 回答
1

您可以通过所需的子文档找到:

db.groups.find({members: {login: "user1", password: "user1pass"}})
于 2013-07-02T21:19:59.350 回答