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

mongodb php získává jedinečné hodnoty polí

Na standardním SQL DBMS by to bylo provedeno pomocí následujícího dotazu:

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

na mongodb by to bylo provedeno pomocí funkce group, i když je to trochu složitější:

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

Zde žádám db, aby vrátila hodnoty pro klíč „type“ (tedy „true“) a pro každou hodnotu bude daná funkce snížení použita k agregaci nalezených záznamů. Zde jen aktualizuji počet, kolikrát se každý záznam objeví. Pokud spustíte tento dotaz, dostanete něco takového:

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

]

Všimnete si, že to není objednáno; dokonce i mongodb docs říkají, že nejjednodušší způsob, jak to objednat, je udělat to na straně klienta.

Příslušná dokumentace je zde .



  1. Použití podmínky na více dokumentů pro stejné pole v MongoDB

  2. MongoDB – Získejte nejnovější nenulovou hodnotu pole z dokumentů s časovým razítkem

  3. Agregace MongoDB:přidejte pole z vloženého dokumentu prostřednictvím cesty dynamického pole

  4. Mongoose Uložil _id'ss jako řetězec namísto ObjectId