MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie frage ich ein Array von Wörterbüchern in MongoDB ab?

Sie müssen $elemMatch verwenden um eingebettete Dokumente in einem Array abzufragen, wenn Sie mehrere Felder des eingebetteten Dokuments abfragen möchten. Ihre Abfrage sollte also so aussehen:

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

Wenn Sie Dokumente abfragen möchten, die (name:"x", value:"1") haben oder (name:"y", value:"2") in derselben Abfrage können Sie $or verwenden mit elemMatch wie folgt:

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

Wenn Sie Dokumente abfragen möchten, die (name:"x", value:"1") haben und (name:"y", value:"2") in derselben Abfrage können Sie $and verwenden mit elemMatch wie folgt:

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