sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB räkna distinkt värde?

Medan .distinct() fungerar bra för att bara få de distinkta värdena för ett fält, för att faktiskt få räkningar av förekomster, detta är bättre lämpat för aggregeringsramverket:

Collection.aggregate([
    { "$group": {
        "_id": "$field",
        "count": { "$sum": 1 }
    }}
],function(err,result) {

});

Även .distinct() metoden "abstrakterar" från där det angivna "distinkta" fältet faktiskt finns inom en array. I det här fallet måste du ringa $unwind först att bearbeta array-elementen här:

Collection.aggregate([
    { "$unwind": "$array" },
    { "$group": {
        "_id": "$array.field",
        "count": { "$sum": 1 }
    }}
],function(err,result) {

});

Så det huvudsakliga arbetet görs i princip i $group genom att "gruppera" på fältvärdena, vilket betyder samma sak som "distinkt". $sum är en grupperingsoperator som i det här fallet bara lägger ihop 1 för varje förekomst av det värdet i fältet för den samlingen.



  1. Hur kan jag installera Redis perl-bibliotek manuellt, dvs offline. Och varifrån kan jag få alla beroenden att installera

  2. skapa och uppdatera flera MongoDB-dokument i ett samtal

  3. MapReduce verkar begränsade till 100?

  4. MongoDB $project:Behåll tidigare pipelinefält