sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur frågar jag en rad ordböcker i MongoDB?

Du måste använda $elemMatch för att fråga inbäddade dokument i en array om du vill fråga med flera fält av inbäddade dokument. Så din fråga bör vara så här:

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

Om du vill ha frågedokument som har (name:"x", value:"1") eller (name:"y", value:"2") i samma fråga kan du använda $or med elemMatch så här:

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

Om du vill ha frågedokument som har (name:"x", value:"1") och (name:"y", value:"2") i samma fråga kan du använda $and med elemMatch så här:

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


  1. Påträffade en MongoDB-varning efter att ha konverterat en replikuppsättning till fristående server

  2. Mongoid inte i fråga

  3. Hur hanterar man pagineringsfrågor korrekt med mongodb och php?

  4. MongoDB Regex-sökning på heltalsvärde