U kunt map() . Gebruik Array.map() met mangoest omdat het een array retourneert, en je kunt beter gewoon de $group gebruiken _id dan het gebruik van $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Of met Cursor.map() bij gebruik van de onderliggende Collection van de kerndriver:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Vrijwel hetzelfde met find() als u de "verschillende" resultaten niet wilt:
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Of met de Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
U kunt ook distinct() . gebruiken , die in feite een variatie van het aggregatieproces en de map() . doet "onder de motorkap" (het "retourneer alleen het veldgedeelte" en niet de afzonderlijke aggregatiemethode):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
MongoDB zelf zal niets anders teruggeven dan een BSON-document, en een simpele string is GEEN BSON-document.