Node.JS + MongoDB聚合框架的平均值

我一直在考虑使用Node和MongoDb作为Android应用程序的评分系统,到目前为止,我已经实现了创build,更新和删除罚款,但我不知道该怎么做,当我想从平均得分D B。 这里是我所决定的数据结构:

[ { "_id": "1", "ratings": [ { "value": "5", "user": "CoolUser1" }, { "value": "4", "user": "CoolUser2" } ] }, { "_id": "2", "ratings": [ { "value": "4", "user": "CoolUser3" }, { "value": "2", "user": "CoolUser4" } ] } ] 

基本上我需要的是一个给定_id的评分的平均值。

下面是我使用的Update方法,以了解如何设置mongoDB连接:

 exports.updateRating = function(req, res) { var id = req.params.id; var rating = req.body; console.log('Updating a rating: ' + id); console.log(JSON.stringify(rating)); ratings.update({'_id': id}, {$push: rating}, {upsert:true}, function(err, result) { if (err) { console.log('Error updating rating: ' + err); res.send({'error':'An error has occurred'}); } else { console.log('' + result + ' document(s) updated'); res.send(rating); } } ); } 

ratings.value存储为string是否至关重要?

这将工作,但只有在安全之前将rating转换为数字

 ratings.aggregate([ { $match: { _id: id } }, { $unwind: '$ratings' }, { $group: { _id: null, avg: { $avg: '$ratings.value' } } } ], function(err, result) { console.log(result); db.close(); });