sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man projicerar endast matchande fält av kapslad array i mongo-skalfråga

Okej, tricket var aggregeringsramverket, specifikt avveckla .

> db.mytest.aggregate({$unwind: '$top'},
                      {$unwind: '$top.nest'},
                      {$match: {'top.nest.p': 6}}
  )

Även om jag hade flera undermatchningar i ett enda objekt, skulle detta returnera flera resultat istället för i deras ursprungliga grupperade form. Jag antar att jag kan lägga in en $group dock i pipelinen.

Även om de relaterade länkarna jag hittade föreslog omdesign av schemat som den enda kompletta korrigeringen just nu, så det här är definitivt bättre än ingenting.




  1. mongoose:upptäck om det infogade dokumentet är en dubblett och i så fall returnera det befintliga dokumentet

  2. Hur man importerar .bson-filformat på mongodb

  3. MongoDB &CodeIgniter:Välj var ett fält finns

  4. MongoDB $runda