Tienes que usar $elemMatch para consultar documentos incrustados en una matriz si desea consultar con varios campos del documento incrustado. Entonces su consulta debería ser así:
db.collection.find( {
"A": { $elemMatch: { name: "x", value: "1" } }
})
Si desea consultar documentos que tienen (name:"x", value:"1")
o (name:"y", value:"2")
en la misma consulta, puede usar $or
con elemMatch así:
db.collection.find( {
$or: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})
Si desea consultar documentos que tienen (name:"x", value:"1")
y (name:"y", value:"2")
en la misma consulta, puede usar $and
con elemMatch así:
db.collection.find( {
$and: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})