MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment retourner un tableau de chaîne avec l'agrégation mongodb

Le .aggregate() la méthode renvoie toujours Objects quoi que vous fassiez et cela ne peut pas changer.

Pour votre objectif, vous feriez probablement mieux d'utiliser .distinct() à la place, qui renvoie simplement un tableau des valeurs distinctes :

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

Quelle est exactement la sortie souhaitée :

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

Si vous voulez vraiment utiliser .aggregate() alors la transformation en valeurs uniquement doit se produire "en dehors" de l'expression en post-traitement. Et vous devriez également utiliser $unwind lorsqu'il s'agit de tableaux comme celui-ci.

Vous pouvez le faire avec JavaScript .map() par exemple :

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

Ce qui donne la même sortie, mais le .map() effectue la transformation côté client plutôt que sur le serveur.