title: Node.JS + MongoDB aggregation framework average value
body: <p>I have been thinking of using Node and MongoDb for a ratings system for an Android app, so far I have implemented Create, Update and Delete fine but am at a loss as to what to do when I want to get the average rating back from the DB. Here is the data structure I gave decided upon: </p>
  
  <pre><code>[
    {
      "_id": "1",
      "ratings": [
        {
          "value": "5",
          "user": "CoolUser1"
        },
        {
          "value": "4",
          "user": "CoolUser2"
        }
      ]
    },
    {
      "_id": "2",
      "ratings": [
        {
          "value": "4",
          "user": "CoolUser3"
        },
        {
          "value": "2",
          "user": "CoolUser4"
        }
      ]
    }
  ]
  </code></pre>
  
  <p>Basically what I need is the average value in ratings for a given _id.</p>
  
  <p>Here is the Update method I am using to give a sense of how I have setup the mongoDB connection:</p>
  
  <pre><code>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);
                              }
                          }
          );
  }
  </code></pre>