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

Jak vrátit pole řetězců s agregací mongodb

.aggregate() metoda vždy vrací Objects bez ohledu na to, co děláte, a to se nemůže změnit.

Pro váš účel je pravděpodobně lepší použít .distinct() místo toho vrací pouze pole různých hodnot:

db.users.distinct("emails.address");

Což je přesně váš požadovaný výstup:

["[email protected]","[email protected]","[email protected]"]

Pokud opravdu chcete použít .aggregate() pak k transformaci pouze na hodnoty musí dojít „mimo“ výraz v postprocesingu. A také byste měli používat $unwind při práci s poli, jako je toto.

Můžete to udělat pomocí JavaScriptu .map() například:

db.users.aggregate([
    { "$unwind": "$emails" },
    { "$group": { "_id": "$emails.address" } }
]).map(function(el) { return el._id })

Což dává stejný výstup, ale .map() provádí transformaci na straně klienta namísto na serveru.



  1. Jak otestovat své upgrady aplikace MongoDB?

  2. Napište svého prvního poradce

  3. zmq vs redis pro vzor pub-sub

  4. O MongoDB, proč jej používáme? Terminologie a implementace MongoDB