Sie müssen $elemMatch verwenden um eingebettete Dokumente in einem Array abzufragen, wenn Sie mehrere Felder des eingebetteten Dokuments abfragen möchten. Ihre Abfrage sollte also so aussehen:
db.collection.find( {
"A": { $elemMatch: { name: "x", value: "1" } }
})
Wenn Sie Dokumente abfragen möchten, die (name:"x", value:"1") haben oder (name:"y", value:"2") in derselben Abfrage können Sie $or verwenden mit elemMatch wie folgt:
db.collection.find( {
$or: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})
Wenn Sie Dokumente abfragen möchten, die (name:"x", value:"1") haben und (name:"y", value:"2") in derselben Abfrage können Sie $and verwenden mit elemMatch wie folgt:
db.collection.find( {
$and: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})