Puoi map()
. Usa Array.map()
con mongoose in quanto restituisce un array e è meglio usare semplicemente il $group
_id
rispetto all'utilizzo di $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
O con Cursor.map()
se si utilizza la Collection
sottostante dal driver principale:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Più o meno lo stesso con find()
se non vuoi i risultati "distinti":
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
O con il Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Puoi anche usare distinct()
, che sostanzialmente fa una variazione del processo di aggregazione e di map()
"sotto il cofano" (il "restituisci solo la parte del campo" e non il metodo di aggregazione distinto):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
MongoDB stesso non restituirà nient'altro che un documento BSON e una semplice stringa NON è un documento BSON.