Bạn có thể map()
. Sử dụng Array.map()
với mongoose vì nó trả về một mảng và tốt hơn hết bạn chỉ cần sử dụng $group
_id
so với việc sử dụng $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Hoặc với Cursor.map()
nếu sử dụng Collection
bên dưới từ trình điều khiển cốt lõi:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Tương tự với find()
nếu bạn không muốn kết quả "khác biệt":
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Hoặc với Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Bạn cũng có thể sử dụng distinct()
, về cơ bản thực hiện một biến thể của quy trình tổng hợp và map()
"under the hood" ("chỉ trả về phần trường" chứ không phải phương thức tổng hợp riêng biệt):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
Bản thân MongoDB sẽ không trả về bất kỳ thứ gì khác ngoài Tài liệu BSON và một chuỗi đơn giản KHÔNG phải là Tài liệu BSON.