2017-10-11 11 views
0

EDIT: Solution trouvée dans le premier commentaire, vous pouvez également vérifier that question, nous réalisons la même chose.MongoDB documents de groupe par nom de champ sans spécifier de valeur

Disons que j'ai une collection, y compris les documents

{name: 'John', fruit:'apples'}, 
{name:'Zac', fruit:'bananas'}, 
{name:'Sara', fruit:'oranges'}, 
{name:'John', fruit:'oranges' }, 
{name:'Sara', fruit:'pear'} 

Est-il possible en utilisant MongoDB de regrouper ces documents par leurs noms de champs sans préciser leurs valeurs? Je veux que tous les documents soient regroupés en fonction de leurs noms sans préciser "John" ou "Sara" par exemple.

Ce que je suis en train de réaliser est de les regrouper par nom, de sorte que le pseudo-code serait quelque chose comme:

db.collection.groupByField('name')

et le résultat souhaité est:

[ 
    [ 
    {name: 'John', fruit:'apples'}, 
    {name:'John', fruit:'oranges' } 
    ], 
    [ 
    {name:'Zac', fruit:'bananas'} 
    ], 
    [ 
    {name:'Sara', fruit:'oranges'}, 
    {name:'Sara', fruit:'pear'} 
    ] 
] 
+0

Essayez 'db.collection.aggregate ([{$ group: {_ id:" $ name ", données: {$ push:" $$ ROOT "}}}])' – Veeram

+0

Oui, nous voulions tous les deux vraiment la même chose . Ma question s'adresse aux programmeurs moins expérimentés qui ne sont pas familiers avec l'agrégation. Merci de votre aide, les gars. – Hafez

Répondre

0

Veeram a répondu à ma question dans un commentaire, la solution est:

db.collection.aggregate([{$group:{_id:"$name", data:{$push:"$$ROOT"}}}])