Możesz map()
. Użyj Array.map()
z mangustą, ponieważ zwraca tablicę, a lepiej jest po prostu użyć $group
_id
niż przy użyciu $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Lub za pomocą Cursor.map()
jeśli używasz podstawowej Collection
z podstawowego sterownika:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Podobnie z find()
jeśli nie chcesz „wyraźnych” wyników:
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Lub za pomocą Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Możesz także użyć distinct()
, który zasadniczo stanowi odmianę procesu agregacji i map()
„pod maską” ( „zwróć tylko część pola”, a nie odrębną metodę agregacji):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
Sam MongoDB nie zwróci niczego poza dokumentem BSON, a prosty ciąg znaków NIE jest dokumentem BSON.