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

mongodb php erhält eindeutige Feldwerte

Auf einem Standard-SQL-DBMS würde dies mit der folgenden Abfrage erfolgen:

SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;

Auf Mongodb würde dies mit der Gruppenfunktion erfolgen, obwohl es etwas komplizierter ist:

db.collection.group(
           {key: { "type":true},
            reduce: function(obj,prev) { prev.count += 1; },
            initial: { count: 0 }
            });

Hier bitte ich die Datenbank, Werte für den Schlüssel "type" (daher "true") zurückzugeben, und für jeden Wert wird die angegebene Reduce-Funktion verwendet, um die gefundenen Datensätze zu aggregieren. Hier aktualisiere ich nur eine Zählung, wie oft jeder Datensatz vorkommt. Wenn Sie diese Abfrage ausführen, erhalten Sie etwa Folgendes:

[
    {
        "type" : "report",
        "count" : 5
    },
    {
        "type" : "memo",
        "count" : 15
    }
    {
        "type" : "research",
        "count" : 3
    }

]

Sie werden feststellen, dass dies nicht bestellt ist; Sogar die Mongodb-Dokumentation sagt, dass der einfachste Weg, es zu bestellen, darin besteht, es clientseitig zu tun.

Relevante Dokumentation ist hier .