Я установил пакет агрегации mongodb, но я получил «undefined», возвращенный при формировании агрегации в методе метеор. Я предполагаю, что мне не хватает чего-то фундаментального. Как следует выполнять агрегацию? Будем признательны любому совету.Выполнение агрегации с использованием метеор-манго-расширений
rate: function(ratingProp){
var user = Meteor.user();
var postId = ratingProp.postId;
var post = Posts.findOne({_id: postId});
var rateVal = ratingProp.rateVal;
// ensure the user is logged in
if (!user) {
throw new Meteor.Error(401, "You need to signin to rate.");
}
// ensure rating has rateVal
if (!rateVal){
throw new Meteor.Error(422, "No rating provided.");
}
// ensure rating has a post
if (!post){
throw new Meteor.Error(422, "Rating not associated with a post.");
}
Ratings.upsert({userId: user._id, postId: postId},
{$set: { rateVal: rateVal }}
);
// perform aggregation
var avgRate = Ratings.aggregate([
{$match:
// hard coded for testing
{postId: "D7f3WoDEGW3SqGKW9"}
},
{$group:
{
_id: null,
"avgRating":{$avg: "$rateVal"}
}
}
]);
// additional code...
Спасибо! Я все еще получаю undefined после перемещения агрегации вне метода. Какие пакеты поддерживают агрегацию? Я мог только найти агломерацию монгодба (тот, который я использовал) и агломерацию mongodb-server в атмосфере. – Derek
Учитывая ваш пример, агрегирование mongodb-server - это тот, который я попробовал бы. Вы можете обернуть вызов внутри метеорного метода, как в вашем примере, и он должен работать нормально. Поймите, что эта функциональность в конечном итоге должна быть добавлена в основные коллекции Meteor. Все до тех пор будет просто патчем. (Дайте мне знать, если это исправлено для вас, спасибо!) – Sivli
Я пробовал mongodb-server-aggregation, но имел ту же неопределенную проблему. У меня есть взломать место, где я держу сумму и подсчитываю и вычисляю среднее значение, но оно, вероятно, восприимчиво к состоянию гонки. Я попытаюсь вернуться к агрегации mongodb-server, когда я закончу некоторые из других вещей, над которыми я работаю, и посмотреть, смогу ли я решить проблему. – Derek