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.