3
我收集了一些东西,每个东西都有一些用户评论,每个评论都有一个数字(1-5)评级。我希望定期运行批量作业,根据该作品的用户评论中的个人评分计算每件“事物”的平均评分,然后再以该新评分保存“事情”。我希望在服务器上发生这种情况,而无需下载和上传每个文档。如何使用计算值批量更新MongoDB服务器上的文档?
换句话说,我正在寻找一个解决方案,它将迭代我收藏中的所有东西,总结用户评论的评分,然后将评分总数除以评分计数(从而得到平均值)并存储该平均值在每个文件的财产。在第一
我试着用地图接近这一/减少,是这样的:
function() {
var rating = 0;
for (var i = 0; i < this.Reviews.length; i++) {
rating += this.Reviews[i].Rating;
}
rating = rating/this.Reviews.length;
emit(this._id, rating);
}
function(key, values) {
return null;
}
的收视率似乎是适当的计算,但我无法调用db.things.update()或内侧第一或第二功能。我是能够通过使用所得到的表像这样来更新评级:
db.reduced.find().forEach(function(thing) {
db.things.update({_id: thing._id},{$set:{Rating:thing.value}});
});
但是,这是一个客户端解决方案,这是不令人满意的......它不一定是地图/减少,但可能这是要走的路?