2016-11-29 1 views
0

hier mein Dokument ist:die Zahl der Mitglieder, bevor Gruppe zählen sie

member: [ 
    { 
     name: 'Jack', 
     group: 0 
    }, 
    { 
     name: 'Rose', 
     group: 0 
    }, 
    { 
     name: 'Tom', 
     group: 1 
    } 
] 

erste, die Anzahl der Mitglieder zählen, dann gruppieren.

Rückkehr:

{ 
    count: 3, 
    member: [ 
     [ 
      {name: 'Jack'}, 
      {name: 'Rose'} 
     ], 
     [ 
      {name: 'Tom'} 
     ] 
    ] 
} 

wie zu tun danke Ihnen sehr!

+0

Was Sie versucht? – Yogesh

+0

Verstehst du meine Frage nicht? – aweiu

+1

Ja ich verstehe deine Frage. Kannst du mir zeigen, was du probiert hast? Ihr Ansatz, um das zu lösen? – Yogesh

Antwort

0

Zuerst sollten Sie member Array-Größe mit $size in $project berechnen danach unwindmember und gruppieren sie unter Abfrage überprüfen:

db.collectionName.aggregate({ 
    "$project": { 
    "count": { 
     "$size": "$member" 
    }, 
    "member": 1 
    } 
}, { 
    "$unwind": "$member" 
}, { 
    "$group": { 
    "_id": "$member.group", 
    "data": { 
     "$push": { 
      "name": "$member.name" 
     } 
    }, 
    "count": { 
     "$first": "$count" 
    } 
    } 
}, { 
    "$group": { 
    "_id": "$count", 
    "member": { 
     "$push": "$data" 
    } 
    } 
}).pretty() 
+0

Aha! Danke! Ich vergesse die letzte $ Gruppe, andere sind gleich zu deinen Codes – aweiu

+0

Ok! darum habe ich dich gefragt, was du probiert hast;) – Yogesh

Verwandte Themen