У меня есть следующие модели:Mongoose/Экспресс: среднее поддокументов
продукт:
var ProductSchema = new Schema({
name: String,
comments: [{ type: Schema.Types.ObjectId, ref: 'Comment'}],
_user: { type: Schema.Types.ObjectId, ref: 'User'}
});
Комментарий:
var CommentSchema = new Schema({
text: String,
rating: Number,
_product: { type: Schema.Types.ObjectId, ref: 'Product'}
});
Что я в настоящее время получить все продукты вместе с их пользователем :
router.get('/', function(req, res, next) {
Product.find().populate('_user').exec(function (err, products) {
if (err) return next(err);
res.json(products);
});
});
Я хотел бы добавить к результатам «среднее» поле, которое содержит среднее значение всех комментариев для каждого продукта, так что результаты будут выглядеть следующим образом:
[{name: "Product 1", _user: {name: "Bob"}, average: 7.65},...]
Возможно ли это с уникальным запросом? Нужно ли мне вычислять и хранить среднее значение в документе Product каждый раз, когда добавляется новый комментарий?
Спасибо!
Have A посмотрите на виртуальные поля Mongoose: http://mongoosejs.com/docs/guide.html – ZeMoon