MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come ottenere una richiamata su MongoDB collection.find()

Questa è la sintassi di callback corretta, ma cosa find fornisce alla richiamata un Cursor , non un array di documenti. Quindi, se vuoi che la tua richiamata fornisca risultati come un array di documenti, chiama toArray sul cursore per restituirli:

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

Nota che la richiamata della tua funzione deve ancora fornire un err parametro in modo che il chiamante sappia se la query ha funzionato o meno.

Aggiornamento driver 2.x

find ora restituisce il cursore anziché fornirlo tramite una richiamata, quindi l'utilizzo tipico può essere semplificato in:

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

Oppure, in questo caso in cui è previsto un unico documento, è più semplice utilizzare findOne :

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