次のような構造の MongoDB ドキュメントがあります。
{
"user_id": 7387,
"first_name": "Daniel",
"roles": [
{
"role_id": "509c20144fd846549e8d42ef",
"role_name": "Writer",
"is_lead": 0
},
{
"role_id": "509c20344fd846549e8d42f0",
"role_name": "Editor",
"is_lead": 1
}
]
},
{
"user_id": 15735,
"first_name": "Tom",
"roles": [
{
"role_id": "509c203f4fd846549e8d42f1",
"role_name": "Admin",
"is_lead": 0
},
{
"role_id": "509c20144fd846549e8d42ef",
"role_name": "Writer",
"is_lead": 1
},
{
"role_id": "509c20344fd846549e8d42f0",
"role_name": "Editor",
"is_lead": 0
}
]
}
roles.role_name が Writer で、roles.is_lead が 1 のすべてのユーザー (リードでもあるすべてのライター) を見つけるにはどうすればよいですか?
私は試した:
db.users.find({$and:[{"roles.role_name":"Writer","roles.is_lead":1}]});
上記の例では、"Tom" のみを返す必要があります。しかし、これは "Tom" と "Daniel" の両方を返します ("Daniel" の編集者の役割に対して {roles.is_lead:1} を選択すると思います。このクエリを修正するにはどうすればよいですか?
ありがとう。