Du kan map()
. Brug Array.map()
med mongoose, da den returnerer et array, og du er bedre stillet ved blot at bruge $group
_id
end at bruge $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Eller med Cursor.map()
hvis du bruger den underliggende Collection
fra kernedriveren:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Meget det samme med find()
hvis du ikke vil have de "særskilte" resultater:
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 også bruge distinct()
, som grundlæggende udfører en variation af aggregeringsprocessen og map()
"under motorhjelmen" ( "retur bare markdelen" og ikke den særskilte aggregeringsmetode):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
MongoDB selv returnerer ikke andet end et BSON-dokument, og en simpel streng er IKKE et BSON-dokument.