我有一个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作为作家和roles.is_lead为1的所有用户(谁是所有的作家也是领先的)?
我想:
db.users.find({$and:[{"roles.role_name":"Writer","roles.is_lead":1}]});
在上面的例子中,它应该只返回 “汤姆”。但是,这同时返回“汤姆”和“丹尼尔”(我猜它选择{roles.is_lead:1}“丹尼尔”的编辑角色如何解决这个查询
感谢
我试过了,但它返回了两个文档。 – Rainbard
你试过我最近的更新吗?我的第一个回答是错误的。但elemMatch适合我 – jdi