Можете да map()
. Използвайте Array.map()
с mongoose, тъй като връща масив и е по-добре просто да използвате $group
_id
отколкото да използвате $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Или с Cursor.map()
ако използвате основната Collection
от основния драйвер:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Почти същото с find()
ако не искате "отличителните" резултати:
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Или с Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Можете също да използвате distinct()
, което основно прави вариант на процеса на агрегиране и map()
„под капака“ („връщане само на частта от полето“, а не отделният метод на агрегиране ):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
Самият MongoDB няма да върне нищо друго освен BSON документ, а обикновен низ НЕ е BSON документ.