2016-06-01 8 views
1

Warum nicht db.find funktionieren? Die console.log wird undefined ...Mongodb find() funktioniert nicht

var course = (db.courses.find({ _id: mongo.helper.toObjectID(param.course)})); 
console.log(course.body) 
+0

Es ist, weil [ 'finden()'] (https://docs.mongodb.com/manual/reference/method/db. collection.find /) in mongo-Shell gibt einen Cursor an die Dokumente zurück, die den Abfragekriterien entsprechen. Verwenden Sie stattdessen ['findOne()'] (https://docs.mongodb.com/manual/reference/method/db.collection.findOne/#db.collection.findOne), um das übereinstimmende Dokument zurückzugeben. – chridam

+0

Versuchte db.courses.findOne (({{id: mongo.helper.toObjectID (param.course)})) aber es gibt immer noch undefined @chridam – sacan

+3

Verwenden Sie eine Rückruffunktion, um das zurückgegebene Dokument zu erhalten. Das Beispiel, das ich oben gab, ist für Mongo Shell. in Node.js benötigen Sie einen Callback dh 'db.courses.findOne ({_id: mongo.helper.toObjectID (param.course)}, Funktion (err, Kurs) {console.log (Kurs);})' – chridam

Antwort

2

Die Art und Weise Sie versuchen Verwendung Selects documents in a collection and returns a cursor to the selected documents., so dass Sie den Weg nicht benutzen Sie versuchen, es zu benutzen.

Sie müssen callback() verwenden, um die Datensätze zu erhalten, die der Abfrage entsprechen.

Der Code unten Ergebnis in einem Array-Format geben wird: -

db.courses.findOne({ _id: mongo.helper.toObjectID(param.course)}).toArray(function(err, result) 
{ 
    console.log(result[0]); // will give you the matched record. 
}) 
+0

Wenn die Abfrage ein einzelnes Dokument zurückgibt (da es das Feld _id abfragt), können Sie auch die Methode fineOne() 'verwenden, die das Dokument zurückgibt. – chridam

+1

@chridam Ok. Daran habe ich nicht gedacht. Danke für das Aufzeigen. Wird meine Antwort aktualisieren. – Shrabanee