Anda dapat map()
. Gunakan Array.map()
dengan luwak karena mengembalikan array, dan Anda lebih baik menggunakan $group
_id
daripada menggunakan $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Atau dengan Cursor.map()
jika menggunakan Collection
yang mendasarinya dari driver inti:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Hampir sama dengan find()
jika Anda tidak menginginkan hasil yang "berbeda":
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Atau dengan Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Anda juga dapat menggunakan distinct()
, yang pada dasarnya melakukan variasi dari proses agregasi dan map()
"under the hood" ( "kembalikan hanya bagian bidangnya" dan bukan metode agregasi yang berbeda ):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
MongoDB sendiri tidak akan mengembalikan apa pun selain Dokumen BSON, dan string sederhana BUKAN Dokumen BSON.