Devi usare $elemMatch per interrogare i documenti incorporati in una matrice se si desidera interrogare con più campi del documento incorporato. Quindi la tua domanda dovrebbe essere così:
db.collection.find( {
"A": { $elemMatch: { name: "x", value: "1" } }
})
Se vuoi interrogare documenti che hanno (name:"x", value:"1")
o (name:"y", value:"2")
nella stessa query, puoi usare $or
con elemMatch in questo modo:
db.collection.find( {
$or: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})
Se vuoi interrogare documenti che hanno (name:"x", value:"1")
e (name:"y", value:"2")
nella stessa query, puoi usare $and
con elemMatch in questo modo:
db.collection.find( {
$and: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})