sql >> Database >  >> NoSQL >> MongoDB

MongoDB telt verschillende waarde?

Terwijl .distinct() werkt goed om alleen de afzonderlijke waarden voor een veld te verkrijgen, om het aantal exemplaren daadwerkelijk te krijgen, dit is beter geschikt voor het aggregatieraamwerk:

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

});

Ook de .distinct() methode doet "abstract" van waar het gespecificeerde "verschillende" veld zich feitelijk binnen een array bevindt. In dit geval moet je $unwind . bellen eerst de array-elementen hier verwerken:

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

});

Dus het belangrijkste werk wordt in principe gedaan in de $group door "groeperen" op de veldwaarden, wat hetzelfde betekent als "onderscheiden". De $sum is een groeperingsoperator die in dit geval gewoon 1 . optelt voor elk exemplaar van die waarde in het veld voor die verzameling.



  1. Django Channels Error - Kan BACKEND 'asgi_redis.RedisChannelLayer' niet importeren

  2. Hoe TTL definiëren voor redis-streams?

  3. MongoDB - paging

  4. Hoe een transactie met terugdraaien in Redis te implementeren