Du måste använda $elemMatch för att fråga inbäddade dokument i en array om du vill fråga med flera fält av inbäddade dokument. Så din fråga bör vara så här:
db.collection.find( {
"A": { $elemMatch: { name: "x", value: "1" } }
})
Om du vill ha frågedokument som har (name:"x", value:"1") eller (name:"y", value:"2") i samma fråga kan du använda $or med elemMatch så här:
db.collection.find( {
$or: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})
Om du vill ha frågedokument som har (name:"x", value:"1") och (name:"y", value:"2") i samma fråga kan du använda $and med elemMatch så här:
db.collection.find( {
$and: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})