sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur räknar man förekomsten av varje värde i array?

Du glömde de lockiga hängslen på key värde och du måste avsluta den raden med en , istället för en ; .

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

UPPDATERA

Efter att ha upptäckt comments är en array...du skulle behöva använda aggregate för det så att du kan "varva ner" comments och gruppera sedan på det:

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

För exempeldokumentet i frågan ger detta ut:

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


  1. Använd javascript-variabeln som ett värde för $regex i MongoDB-frågan

  2. MongoDB $-operatör

  3. Pub/sub-implementering i nodeJS

  4. Redis typad klient