MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment interroger un tableau de dictionnaires dans MongoDB ?

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" } } }
  ]  
})