Du kan map()
. Använd Array.map()
med mongoose eftersom den returnerar en array, och du är bättre av att helt enkelt använda $group
_id
än att använda $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Eller med Cursor.map()
om du använder den underliggande Collection
från kärndrivrutinen:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Ungefär samma sak med find()
om du inte vill ha de "särskilda" resultaten:
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Eller med Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Du kan också använda distinct()
, som i princip gör en variant av aggregeringsprocessen och map()
"under huven" ( "retur bara fältdelen" och inte den distinkta aggregeringsmetoden):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
MongoDB själv kommer inte att returnera något annat än ett BSON-dokument, och en enkel sträng är INTE ett BSON-dokument.