Ihre Webseiten-IDs sind Zeichenfolgen, während die _ids, mit denen Sie suchen, ObjectIds sind. Ihre Suche stimmt mit keinen Ergebnissen überein, da es keine Dokumente in der Ergebnistabelle gibt, die ObjectId-Werte für das "webpageid"-Element haben.
Aus meiner Sicht gibt es zwei Lösungen.
- Sie könnten ObjectIds anstelle von Strings für die
webpageid
speichern -Element in denresults
Sammlung. Die Umsetzung davon hängt natürlich davon ab, wie diese Dokumente in die Sammlung gelangen. -
Sie könnten eine Zeichenfolgenvariable aus der zurückgegebenen ObjectId
innerhalb der Schleife, um stattdessen zu vergleichen. Zum Beispiel ... for(var i = 0; i < docs.length; i++) { var docId = docs[i]._id.toString(); // create a string db.get('results').findOne({'webpageid':docId}, function(err, doc) ...
Wenn Sie sich für die zweite Option entscheiden, müssen Sie möglicherweise untersuchen, warum am Anfang der webpageid
ein führendes Anführungszeichen steht Wert für das zweite Dokument in den results
Sammlung.
"webpageid" : "\"54960a916ecb16dc3c4880e8"
Schließlich weiß ich nicht viel über Ihre Anforderungen, aber vielleicht möchten Sie MongoDB als Lösung überdenken. Es scheint, dass Sie so etwas wie einen JOIN erstellen, für den MongoDB nicht sehr gut geeignet ist.