我有以下记录的嵌套阵列上执行与操作:如何在MongoDB中的查询对象
Record 1:
{
"status": "active",
"users": [
{
"name": "foo",
"status": "a"
},
{
"name": "foo",
"status": "b"
}
]
}
Record 2:
{
"status": "active",
"users": [
{
"name": "bar",
"status": "a"
},
{
"name": "foo",
"status": "b"
}
]
}
现在,我想返回只记录其中user.name
是“富”和user.status
是“一” - 这就是我需要记录1回,因为它满足我的要求。
如何对记录中的数组执行AND操作? 我尝试以下查询:
{
"$and": [
{
"users.name": "foo"
},
{
"users.status": "a"
}
]
}
,但我得到两个记录 - 我只需要在第一个记录(因为用户阵列中,它有一个条目,其中名称是“富”,状态为“一个”)。
任何线索?
所以你的意思是说,如果用户数组包含对象,并且这些对象包含'name'和'status'以外的字段,那么上述查询将不起作用?在我的情况下,是的 - 对象包含除上述两个等领域,但我不希望将其包含在查询 - 我该如何去做呢? – callmekatootie
使用$ elemMatch像你已经想通了。 –
@Philipp请注意,您的答案将无法正常工作 - 它只会匹配*确切*对象{“名”:“富”,“状态”:“一”} - 它甚至不会匹配用户有这两个字段以相反的顺序! –