MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come posso interrogare una matrice di dizionari in MongoDB?

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