.aggregate()
メソッドは常にObjects
を返します 何をしても、それを変えることはできません。
あなたの目的のためには、おそらく.distinct()
を使用する方が良いでしょう。 代わりに、個別の値の配列を返すだけです:
db.users.distinct("emails.address");
まさにあなたの望む出力です:
["[email protected]","[email protected]","[email protected]"]
本当に.aggregate()
を使用したい場合 次に、値だけへの変換は、後処理で式の「外側」で行われる必要があります。また、$unwind
も使用する必要があります このような配列を扱う場合。
これはJavaScriptの.map()
で実行できます 例:
db.users.aggregate([
{ "$unwind": "$emails" },
{ "$group": { "_id": "$emails.address" } }
]).map(function(el) { return el._id })
これは同じ出力を提供しますが、.map()
サーバーではなくクライアント側で変換を行います。