Sie können map()
. Verwenden Sie Array.map()
mit Mongoose, da es ein Array zurückgibt, und Sie sind besser dran, einfach die $group
zu verwenden _id
als mit $push
const subCategory = (await SubCategory.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
])).map(({ _id }) => _id);
Oder mit Cursor.map()
wenn die zugrunde liegende Collection
verwendet wird vom Kerntreiber:
const subCategory = await SubCategory.collection.aggregate([
{ '$match': { category: "dining" } },
{ '$group': { '_id': "$name" } }
]).map(({ _id }) => _id).toArray();
Ähnlich verhält es sich mit find()
wenn Sie die "eindeutigen" Ergebnisse nicht wollen:
const subCategory = (await Subcategory.find({ category: "dining" }))
.map(({ name }) => name);
Oder mit Cursor.map()
const subCategory = await Subcategory.collection.find({ category: "dining" })
.map(({ name }) => name).toArray();
Sie können auch distinct()
verwenden , das im Grunde eine Variation des Aggregationsprozesses und des map()
ausführt "unter der Haube" (die "Rückgabe nur des Feldteils" und nicht die eindeutige Aggregationsmethode):
const subCategory = await SubCategory.distinct("name",{ category: "dining" });
MongoDB selbst gibt nichts anderes als ein BSON-Dokument zurück, und eine einfache Zeichenfolge ist KEIN BSON-Dokument.