sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan projicerer du kun matchende felter af indlejret array i mongo shell-forespørgsel

Ok, tricket var aggregeringsrammen, specifikt afslapning .

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

Selvom i det tilfælde, hvor jeg havde flere undermatches i et enkelt objekt, ville dette returnere flere resultater i stedet for i deres oprindelige grupperede form. Jeg formoder, at jeg kan sætte en $group dog i pipelinen.

Selvom de relaterede links, jeg fandt, foreslog skema-redesign som den eneste komplette rettelse lige nu, så er dette bestemt bedre end ingenting.




  1. Sådan får du en liste over mongodb-databaser og samlingsliste fra en ruby ​​on rails-app

  2. Spring Data MongoDB aggregering - match efter beregnet værdi

  3. Oversæt FilterDefinition<TDocument> til almindelig json mongo-forespørgsel, som jeg kan køre i en mongo-skal

  4. Fortryd convertToCapped til en samling