Você pode
map()
. Use Array.map()
com mangusto, pois ele retorna um array, e é melhor você simplesmente usar o $group
_id
do que usar $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Ou com
Cursor.map()
se estiver usando a Collection
subjacente do driver principal:const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Muito parecido com
find()
se você não quiser os resultados "distintos":const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Ou com o
Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Você também pode usar
distinct()
, que basicamente faz uma variação do processo de agregação e do map()
"sob o capô" (o "retorno apenas a parte do campo" e não o método de agregação distinto):const subCategory = await SubCategory.distinct("name",{ category: "dining" });
O próprio MongoDB não retornará nada além de um documento BSON, e uma string simples NÃO é um documento BSON.