sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan tæller man forekomsten af ​​hver værdi i array?

Du har glemt de krøllede seler på key værdi, og du skal afslutte den linje med en , i stedet for en ; .

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

OPDATERING

Efter at have indset comments er et array...du skal bruge aggregate for det, så du kan 'slappe af' comments og grupper derefter på det:

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

For eksempeldokumentet i spørgsmålet giver dette:

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


  1. Opgradering af mongodb har ingen effekt og viser stadig den gamle version

  2. mongodb aggregation project objectId med concat

  3. explain() i Mongodb:forskelle mellem nscanned og nscannedObjects

  4. En introduktion til MongoDB Zone Basics