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.