Musisz użyć $elemMatch do zapytania o osadzony dokument w tablicy, jeśli chcesz wykonać zapytanie z wieloma polami osadzonego dokumentu. Twoje zapytanie powinno wyglądać tak:
db.collection.find( {
"A": { $elemMatch: { name: "x", value: "1" } }
})
Jeśli potrzebujesz dokumentów zapytań, które mają (name:"x", value:"1")
lub (name:"y", value:"2")
w tym samym zapytaniu możesz użyć $or
z elemMatch tak:
db.collection.find( {
$or: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})
Jeśli potrzebujesz dokumentów zapytań, które mają (name:"x", value:"1")
i (name:"y", value:"2")
w tym samym zapytaniu możesz użyć $and
z elemMatch tak:
db.collection.find( {
$and: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})