.aggregate()
metoda zawsze zwraca Objects
bez względu na to, co robisz i to nie może się zmienić.
W tym celu prawdopodobnie lepiej będzie użyć .distinct()
zamiast tego, który po prostu zwraca tablicę różnych wartości:
db.users.distinct("emails.address");
Jaki jest dokładnie twój pożądany wynik:
["[email protected]","[email protected]","[email protected]"]
Jeśli naprawdę chcesz użyć .aggregate()
następnie transformacja tylko do wartości musi nastąpić „poza” wyrażeniem w przetwarzaniu końcowym. Powinieneś także używać $unwind
kiedy mamy do czynienia z takimi tablicami.
Możesz to zrobić za pomocą JavaScript .map()
na przykład:
db.users.aggregate([
{ "$unwind": "$emails" },
{ "$group": { "_id": "$emails.address" } }
]).map(function(el) { return el._id })
Co daje to samo wyjście, ale .map()
wykonuje transformację po stronie klienta zamiast na serwerze.