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.