sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo obtener una devolución de llamada en MongoDB collection.find()

Esa es la sintaxis de devolución de llamada correcta, pero ¿qué find proporciona a la devolución de llamada un Cursor , no una matriz de documentos. Entonces, si desea que su devolución de llamada proporcione resultados como una matriz de documentos, llame a toArray en el cursor para devolverlos:

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

Tenga en cuenta que la devolución de llamada de su función aún debe proporcionar un err parámetro para que la persona que llama sepa si la consulta funcionó o no.

Actualización del controlador 2.x

find ahora devuelve el cursor en lugar de proporcionarlo a través de una devolución de llamada, por lo que el uso típico se puede simplificar a:

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

O en este caso, donde se espera un solo documento, es más sencillo usar findOne :

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