sql >> Databáze >  >> NoSQL >> MongoDB

Jak mohu zadat dotaz na pole slovníků v MongoDB?

Musíte použít $elemMatch k dotazu na vložené dokumenty v poli, pokud chcete dotazovat s více poli vloženého dokumentu. Váš dotaz by tedy měl znít takto:

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

Pokud chcete dotazovat dokumenty, které mají (name:"x", value:"1") nebo (name:"y", value:"2") ve stejném dotazu můžete použít $or s elemMatch takto:

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

Pokud chcete dotazovat dokumenty, které mají (name:"x", value:"1") a (name:"y", value:"2") ve stejném dotazu můžete použít $and s elemMatch takto:

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


  1. Stránkování MongoDB na polích – Zkontrolujte, zda $slice dosáhl začátku pole

  2. chyba připojení redis v kontejneru dockeru

  3. Jak používat vkládání hmoty Redis?

  4. MongoDB:nelze upsert, pokud objekt dotazu a objekt aktualizace obsahují stejnou vlastnost, 'Nelze použít modifikátor $addToSet na non-array'