How to get a callback on MongoDB collection.find()

That’s the correct callback syntax, but what find provides to the callback is a Cursor, not an array of documents. So if you want your callback to provide results as an array of documents, call toArray on the cursor to return them:

collection.find({'_id':o_id}, function(err, cursor){
    cursor.toArray(callback);
    db.close();
});

Note that your function’s callback still needs to provide an err parameter so that the caller knows whether the query worked or not.

2.x Driver Update

find now returns the cursor rather than providing it via a callback, so the typical usage can be simplified to:

collection.find({'_id': o_id}).toArray(function(err, results) {...});

Or in this case where a single document is expected, it’s simpler to use findOne:

collection.findOne({'_id': o_id}, function(err, result) {...});

Leave a Comment