sql >> Base de Datos >  >> NoSQL >> MongoDB

mongodb php obteniendo campos valores únicos

En un DBMS SQL estándar, esto se haría con la siguiente consulta:

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

en mongodb esto se haría usando la función de grupo, aunque es un poco más complicado:

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

Aquí le pido a la base de datos que devuelva valores para el "tipo" de clave (de ahí el "verdadero"), y para cada valor, la función de reducción dada se usará para agregar los registros encontrados. Aquí solo estoy actualizando un recuento de cuántas veces aparece cada registro. Si ejecuta esta consulta, obtendrá algo como esto:

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

]

Notarás que esto no está ordenado; incluso los documentos de mongodb dicen que la forma más fácil de ordenarlo es hacerlo del lado del cliente.

La documentación relevante está aquí .