Você precisa usar $elemMatch para consultar documentos incorporados em uma matriz se desejar consultar com vários campos do documento incorporado. Então sua consulta deve ficar assim:
db.collection.find( {
"A": { $elemMatch: { name: "x", value: "1" } }
})
Se você quiser documentos de consulta que tenham
(name:"x", value:"1")
ou (name:"y", value:"2")
na mesma consulta, você pode usar $or
com elemMatch assim:db.collection.find( {
$or: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})
Se você quiser documentos de consulta que tenham
(name:"x", value:"1")
e (name:"y", value:"2")
na mesma consulta, você pode usar $and
com elemMatch assim:db.collection.find( {
$and: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})