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/ ))。

複数のデータベース クエリ (およびコールバック呼び出し) を回避するために、このグループに属する 2 人のユーザーを同じコレクションに含める方法を見つけたかったのです。

ユーザーがログインしたら、そのユーザーとそのユーザーが属するグループを取得する必要があります。ログインとパスワードを同時にユーザーに照会できないことがわかりました。

db.groups.find({$and: [{"members.login": "user1pass"}, {"members.password" : "user2pass"}]})

パスワードが正しいものではないため、返すべきではないレコードを返します。ログインとパスワードをチェックするために正しいリクエストを実行するにはどうすればよいですか?

4

2 に答える 2

2

$elemMatch1 つの配列要素の複数のプロパティを一致させるために使用します。

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 に答える