title: Modifying the results of a Mongoose query
body: <p>I'm working through the <a href="https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs" rel="nofollow noreferrer">MDN tutorial on ExpressJS with Mongoose</a> and <a href="https://caolan.github.io/async/global.html" rel="nofollow noreferrer">Async</a> and at one point I am trying to query for all Books, and then map that to additional queries to find the number of BookInstances for each book. (For example I want to show a table of all the books in the database and then list how many copies we have)</p>
  
  <pre><code>// Display list of all books.
  exports.book_list = function(req, res) {
    Book.find({}, 'title author')
      .exec(function(err, list){
        if (err) {return next(err);}
  
        async.map(list, function(book, next){
          BookInstance.countDocuments({book: book.id}, function(err, count){
            // Try and add the bookinstance count to the book object
            // use next(null, book);
          });
        }, function(err, modified_list){
          res.send(modified_list);
        });
      });
  };
  </code></pre>
  
  <p>However, the following doesn't do anything:</p>
  
  <pre><code>book.count = count
  next(null, book);
  </code></pre>
  
  <p>Nor does:</p>
  
  <pre><code>book.set("count", count");
  next(null, book);
  </code></pre>
  
  <p>In both examples the item remained unmodified. However, the following returns what I'd expect:</p>
  
  <pre><code>var obj = {book: book, count: count};
  next(null, obj);
  </code></pre>
  
  <p>Mongoose's docs describe that find() returns documents, but I can't figure out why they seem to be immutable, or what a Document actually is. Is there a way for me to just add a <code>count</code> property to the original returned object and not wrap it in another object? </p>