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" } } }
]
})