Můžete map()
. Použijte Array.map()
s mongoose, protože vrací pole a je lepší jednoduše použít $group
_id
než pomocí $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Nebo pomocí Cursor.map()
pokud používáte základní Collection
ze základního ovladače:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Totéž platí pro find()
pokud nechcete mít "odlišné" výsledky:
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Nebo pomocí Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Můžete také použít distinct()
, což v podstatě dělá variaci procesu agregace a map()
"pod kapotou" ("vrátí pouze část pole" a nikoli metodu odlišné agregace):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
MongoDB sám o sobě nevrátí nic jiného než dokument BSON a jednoduchý řetězec NENÍ dokument BSON.