sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo consulto una matriz de diccionarios en MongoDB?

Tienes que usar $elemMatch para consultar documentos incrustados en una matriz si desea consultar con varios campos del documento incrustado. Entonces su consulta debería ser así:

db.collection.find( {
  "A": { $elemMatch: { name: "x", value: "1" } }
})

Si desea consultar documentos que tienen (name:"x", value:"1") o (name:"y", value:"2") en la misma consulta, puede usar $or con elemMatch así:

db.collection.find( {
  $or: [
    { "A": { $elemMatch: { name: "x", value: "1" } } },
    { "A": { $elemMatch: { name: "y", value: "2" } } }
  ]  
})

Si desea consultar documentos que tienen (name:"x", value:"1") y (name:"y", value:"2") en la misma consulta, puede usar $and con elemMatch así:

db.collection.find( {
  $and: [
    { "A": { $elemMatch: { name: "x", value: "1" } } },
    { "A": { $elemMatch: { name: "y", value: "2" } } }
  ]  
})