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

Comment compter l'occurrence de chaque valeur dans le tableau ?

Vous avez oublié les accolades sur la key valeur et vous devez terminer cette ligne avec un , au lieu d'un ; .

db.issues.group({
    key: {"comments.username":true},
    initial: {sum:0},
    reduce: function(doc, prev) {prev.sum +=1},
});

MISE À JOUR

Après avoir réalisé les comments est un tableau... vous devez utiliser aggregate pour cela afin que vous puissiez "dérouler" les comments puis groupez dessus :

db.issues.aggregate(
    {$unwind: '$comments'},
    {$group: {_id: '$comments.username', sum: {$sum: 1}}}
);

Pour l'exemple de document dans la question, cela donne :

{
  "result": [
    {
      "_id": "Brandon Black",
      "sum": 1
    },
    {
      "_id": "Nelson Elhage",
      "sum": 3
    }
  ],
  "ok": 1
}