MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb php ottenendo valori univoci per i campi

Su un DBMS SQL standard ciò verrebbe eseguito con la seguente query:

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

su mongodb questo sarebbe fatto usando la funzione di gruppo, anche se è leggermente più complicato:

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

Qui sto chiedendo al db di restituire i valori per la chiave "tipo" (da cui il "vero") e, per ogni valore, la funzione di riduzione fornita verrà utilizzata per aggregare i record trovati. Qui sto solo aggiornando un conteggio di quante volte appare ogni record. Se esegui questa query, otterrai qualcosa del genere:

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

]

Noterai che questo non è ordinato; anche i documenti di mongodb affermano che il modo più semplice per ordinarlo è farlo lato client.

La documentazione pertinente è qui .