MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment projeter uniquement les champs correspondants du tableau imbriqué dans la requête mongo shell

Ok, l'astuce était le framework d'agrégation, spécifiquement unwind .

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

Bien que dans le cas où j'avais plusieurs sous-correspondances dans un seul objet, cela renverrait plusieurs résultats au lieu de leur forme groupée d'origine. Je suppose que je peux mettre un $group dans le pipeline, cependant.

Bien que les liens connexes que j'ai trouvés suggèrent une refonte du schéma comme la seule solution complète à l'heure actuelle, c'est donc définitivement mieux que rien.