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