MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB zählt eindeutigen Wert?

Während .distinct() funktioniert gut, um nur die unterschiedlichen Werte für ein Feld zu erhalten, um tatsächlich die Anzahl der Vorkommen zu erhalten, ist dies besser für das Aggregations-Framework geeignet:

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

});

Auch die .distinct() -Methode "abstrahiert" von der Stelle, an der sich das angegebene "eindeutige" Feld tatsächlich innerhalb eines Arrays befindet. In diesem Fall müssen Sie $unwind aufrufen zuerst die Array-Elemente hier verarbeiten:

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

});

Die Hauptarbeit wird also grundsätzlich in der $group erledigt durch "Gruppierung" der Feldwerte, was dasselbe bedeutet wie "eindeutig". Die $sum ist ein Gruppierungsoperator, der in diesem Fall einfach 1 addiert für jedes Vorkommen dieses Werts im Feld für diese Sammlung.