我有以下記錄的嵌套陣列上執行與操作:如何在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請注意,您的答案將無法正常工作 - 它只會匹配*確切*對象{「名」:「富」,「狀態」:「一」} - 它甚至不會匹配用戶有這兩個字段以相反的順序! –