Puedes map()
. Usa Array.map()
con mongoose ya que devuelve una matriz, y es mejor que simplemente use el $group
_id
que usar $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
O con Cursor.map()
si usa la Collection
subyacente del controlador principal:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Casi lo mismo con find()
si no desea los resultados "distintos":
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
O con el Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
También puede usar distinct()
, que básicamente hace una variación del proceso de agregación y el map()
"bajo el capó" (el "devolver solo la parte del campo" y no el método de agregación distinto):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
MongoDB en sí mismo no devolverá nada más que un documento BSON, y una cadena simple NO es un documento BSON.