sql >> Databáze >  >> NoSQL >> MongoDB

Odlišná hodnota počtu MongoDB?

Zatímco .distinct() funguje dobře pouze pro získání odlišných hodnot pro pole, aby bylo možné skutečně získat počty výskytů, je to vhodnější pro agregační rámec:

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

});

Také .distinct() metoda "abstraktuje" od místa, kde je zadané "odlišné" pole ve skutečnosti v poli. V tomto případě musíte zavolat $unwind nejprve zpracujte prvky pole zde:

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

});

Hlavní práce se tedy v zásadě provádí ve skupině $group "seskupením" na hodnotách pole, což znamená totéž jako "odlišné". $sum je seskupovací operátor, který v tomto případě sčítá pouze 1 pro každý výskyt této hodnoty v poli pro danou kolekci.



  1. Odstraňování problémů

  2. Proč existují pole KEYS a ARGV při volání skriptů Redis Lua?

  3. Co jsou základní příkazy MongoDB a jak je používat?

  4. Převeďte řetězec do MongoDB BsonDocument