0
我有一個在其架構中的以下領域的產品模型對象的內部參考:解析MongoDB的總
category : { type: ObjectId, turnOn: false, ref: "category" }
它引用中有一個標題字段類型模型:
var categorySchema = Schema({
title : { type: String }
});
我在MongoDB聚合中使用了product.category屬性(它是ObjectId類型,如上所示),但確實需要類別模型中的category.title屬性,而不是最終結果集中的_id。
以下代碼完成了工作,但您會看到我必須在最後執行一些循環以「解析」給定product.category(ObjectId)的標題字段。無論如何要做到所有這一切的總和?換句話說,有沒有辦法在返回的組中獲得類別模型對象的標題字段,而不必執行額外的循環工作?根據我研究過的帖子,我沒有看到內置的方式,但想要仔細檢查。
getProductsGroupedByCategory = function(callback) {
Category.find(function(err, cats) {
var aggregate = [
{
$group: {
_id: "$category",
products: {
$push: {
title: "$title",
authors: "$authors",
publishDate: "$publishDate",
description: "$description"
}
}
}
},
{
$sort: {
"_id": 1
}
}
];
Product.aggregate(aggregate, function(err, catProducts) {
//Grab name of category and associate with each group
//since we only have the category_id at this point
for (var i = 0; i<catProducts.length;i++) {
var catProduct = catProducts[i];
for (var j=0;j<cats.length;j++) {
if (catProduct._id.toString() === cats[j]._id.toString()) {
catProduct.category = cats[j].title;
}
}
};
callback(err, catProducts);
});
});
}, //more code follows