2017-10-11 3 views
0

EDIT: Lösung im ersten Kommentar gefunden, können Sie auch überprüfen, that question, erreichen wir die gleiche Sache.MongoDB Gruppendokumente nach Feldname ohne Angabe

Lasst uns sagen, ich habe eine Sammlung dieser Dokumente einschließlich Gibt es

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

jede mögliche Weise mongoDB gruppieren ihre Werte, diese Dokumente von ihren Feldnamen ohne Angabe? Ich möchte, dass alle Dokumente nach ihren Namen gruppiert werden, ohne zum Beispiel "John" oder "Sara" anzugeben.

Was ich versuche, ist, sie zu einer Gruppe von Namen zu erreichen, so dass der Pseudo-Code so etwas wie wäre:

db.collection.groupByField('name')

und das gewünschte Ergebnis ist:

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

Versuchen Sie 'db.collection.aggregate ([{$ group: {_ id:" $ name ", Daten: {$ push:" $$ ROOT "}}})' – Veeram

+0

Ja, wir wollten beide das Gleiche . Meine Frage ist für die weniger erfahrenen Programmierer, die nicht mit Aggregation vertraut sind. Danke für Hilfe, Leute. – Hafez

Antwort

0

Veeram beantwortete meine Frage in einem Kommentar, die Lösung ist:

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