MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como faço para consultar uma matriz de dicionários no MongoDB?


Você precisa usar $elemMatch para consultar documentos incorporados em uma matriz se desejar consultar com vários campos do documento incorporado. Então sua consulta deve ficar assim:
db.collection.find( {
  "A": { $elemMatch: { name: "x", value: "1" } }
})

Se você quiser documentos de consulta que tenham (name:"x", value:"1") ou (name:"y", value:"2") na mesma consulta, você pode usar $or com elemMatch assim:
db.collection.find( {
  $or: [
    { "A": { $elemMatch: { name: "x", value: "1" } } },
    { "A": { $elemMatch: { name: "y", value: "2" } } }
  ]  
})

Se você quiser documentos de consulta que tenham (name:"x", value:"1") e (name:"y", value:"2") na mesma consulta, você pode usar $and com elemMatch assim:
db.collection.find( {
  $and: [
    { "A": { $elemMatch: { name: "x", value: "1" } } },
    { "A": { $elemMatch: { name: "y", value: "2" } } }
  ]  
})