Retrieving all records asynchronously then performing an action

In a node.js server, using the mongodb native driver, I want to retrieve records from a cursor and then output them as JSON. I have this (simplified)

var ans = {ids: []};
cursor.each(function(err, doc) {
 if (doc) {
  ans.ids.push(doc.tag);
 }
});
cursor.count(function(err, result) {
 ans.count = result;
 res.send(JSON.stringify(ans));
});

and the result is something like {ids:[], count: 3}. In other words the query appears to run without returning any records. I assume that this is because the data's already been sent before the cursor.each callbacks have run. How do I re-structure this to make sure the sending happens after the iterating?

I have found the answer. The example for cursor.each says "If the item is null then the cursor is exhausted/empty and closed", so: (error handling omitted)

var ans = {ids: []};
cursor.each(function(err, doc) {
 if (doc) {
  ans.ids.push(doc.tag);
 }
 else {
  cursor.count(function(err, result) {
   ans.count = result;
   res.send(JSON.stringify(ans));
  });
 }
});