Vous devez utiliser $elemMatch pour interroger des documents intégrés dans un tableau si vous souhaitez interroger avec plusieurs champs de document intégré. Votre requête devrait donc ressembler à ceci :
db.collection.find( {
"A": { $elemMatch: { name: "x", value: "1" } }
})
Si vous voulez interroger des documents qui ont (name:"x", value:"1")
ou (name:"y", value:"2")
dans la même requête, vous pouvez utiliser $or
avec elemMatch comme ceci :
db.collection.find( {
$or: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})
Si vous voulez interroger des documents qui ont (name:"x", value:"1")
et (name:"y", value:"2")
dans la même requête, vous pouvez utiliser $and
avec elemMatch comme ceci :
db.collection.find( {
$and: [
{ "A": { $elemMatch: { name: "x", value: "1" } } },
{ "A": { $elemMatch: { name: "y", value: "2" } } }
]
})