2016-12-16 4 views
0

Ich mag wäre in der Lage sein, um die folgende ListeMongoDB Anzeige Anzahl der verschiedenen Einträge pro Eintrag

Daten

/* 1 */ 
{ 
    "name" : "Dash" 
} 
/* 2 */ 
{ 
    "name" : "Dash" 
} 
/* 3 */ 
{ 
    "name" : "Pink" 
} 
/* 4 */ 
{ 
    "name" : "Pink" 
} 
/* 1 */ 
{ 
    "name" : "Jamie" 
} 

Was kann ich zur Zeit mit db.getCollection('players').distinct('name') erhalten:

/* 1 */ 
[ 
    "Dash", 
    "Pink", 
    "Jamie" 
] 

Was ich gerne hätte:

/* 1 */ 
[ 
    { 
     name: "Dash", 
     number: 2 
    } 
    { 
     name: "Pink", 
     number: 2 
    } 
    { 
     name: "Jamie", 
     number: 1 
    } 
] 

Ist das mit Mongo möglich?

+0

Ja besteht die Möglichkeit, 'aggregation',' Group' und 'sum' werden Sie Ihre erwartete Ergebnis – Yogesh

+1

' db.players.aggregate erhalten ( [ {$ group: {_id: "$ name", nummer: {$ sum: 1}}} ] ) ' – Veeram

Antwort

1

Dies ist sicherlich mit MongolDB Aggregatbefehle möglich. Was Sie suchen, ist eine $ -Gruppensammlung (https://docs.mongodb.com/v3.2/reference/operator/aggregation/group/).

Aus diesen Gruppierungen können Sie den Namen als _id festlegen und den Vorgang mit der -Operation durchführen. Ein Beispiel für einen Shell-Befehl wäre:

db.players.aggregate([{ 
    $group : { 
     _id : { name: "$name" }, 
     number: { $sum: 1 } 
    } 
}]) 

Dies würde die Gruppierungen nach Bedarf zurückgeben. Weitere Informationen auf den Link klicken ich am Beispiel gab und schauen :) cheers

+0

Oh perfekt, ich frage mich, ob ich jetzt sortieren kann? '.sort ('Nummer')' –

+1

https://docs.mongodb.com/v3.2/reference/operator/aggregation/sort/ –

Verwandte Themen