MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zwrócić tablicę ciągów za pomocą agregacji mongodb?

.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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. explain() w Mongodb:różnice między nscanned i nscannedObjects

  2. Node.js — tworzenie relacji z Mongoose

  3. MongoDB $druga

  4. MongoDB $dayOfYear

  5. Filtruj tablicę za pomocą operatora $in na etapie $project