2016-06-24 6 views
0

У меня есть набор документов, который выглядит следующим образом:MongoDB, использующий совокупный средний результат

var schema = new Schema({ 
name: {type: String, required: true}, 
gradeLevels: {type: String}, 
subject: {type: String}, 
standard: {type: String}, 
description: {type: String}, 
price: {type: String}, 
numberOfInternalReviews: {type: Number}, 
reviews: [{ 
    content: {type: String}, 
    rating: {type: Number}, 
    user: {type: Schema.Types.ObjectId, ref: 'User'}, 
    userFirstName: {type: String}, 
    softDelete: {type : Boolean} 
}], 
averageUserRating: {type: Number} 
}); 

я их создали агрегатную формулу, которая производит среднее значение оценки для каждого обзора, как таковые:

db.applications.aggregate([ 
     { $unwind: "$reviews" }, 
     { $group: { _id: "$_id", reviews: { $push: "$reviews" },          
       averageUserRating: { $avg: "$reviews.rating" } } }, 
     { $project: { _id: 0, _id: "$_id", reviews: 1, averageUserRating: 1 } }]); 

Это дает правильные результаты в среднем по мере необходимости в консоли.

Что мне нужно для этого - это нажать результат в поле AverageUserRating исходного объекта.

Когда я смотрю на документ приложения, значение averageUserRating все равно возвращает null.

Как я могу это сделать?

+1

Что вы используете в заднем конце? – AndreaM16

+0

Я использую node.js, express и mongoose на заднем конце – wjfieseler

ответ

0

может быть, это INB проект типа, так: это изменить:

{ $project: { _id: 0, _id: "$_id", reviews: 1, averageUserRating: 1 } }]); 

к:

{ $project: { _id: "$_id", reviews: 1, averageUserRating: 1 } }]); 
+0

Спасибо, однако, сама формула не является проблемой, я не думаю. Формула правильно дает среднее значение рейтингов обзора. Тем не менее, я не уверен, как использовать эту формулу в express или mongoose, чтобы захватить и сохранить результат в объекте приложения. – wjfieseler

Смежные вопросы