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

So projizieren Sie nur übereinstimmende Felder eines verschachtelten Arrays in einer Mongo-Shell-Abfrage

Ok, der Trick war das Aggregations-Framework, insbesondere Unwind .

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

In dem Fall, dass ich mehrere Unterübereinstimmungen in einem einzelnen Objekt hatte, würde dies jedoch mehrere Ergebnisse anstatt in ihrer ursprünglichen gruppierten Form zurückgeben. Ich nehme an, ich kann eine $group setzen in die Pipeline.

Obwohl die verwandten Links, die ich gefunden habe, eine Schema-Neugestaltung als derzeit einzige vollständige Lösung vorgeschlagen haben, ist dies definitiv besser als nichts.