sql >> Database >  >> NoSQL >> MongoDB

Hoe het voorkomen van elke waarde in de array te tellen?

Je bent de accolades vergeten op de key waarde en u moet die regel beëindigen met een , in plaats van een ; .

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

UPDATE

Na het realiseren van comments is een array...je zou aggregate moeten gebruiken daarvoor zodat je comments kunt 'ontspannen' en groepeer er dan op:

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

Voor het voorbeelddocument in de vraag levert dit het volgende op:

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


  1. Hoe tel je het aantal documenten in een MongoDB-verzameling binnen Node?

  2. Mongoose.js maakt meerdere verbindingen met MongoDB vanuit één connect()-aanroep

  3. MongoDB+doctrine:hoe de zoekopdracht te sorteren op tekstzoekscore

  4. PowerShell niet compatibel met MongoDB C# Driver's Methods?