MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb find funktioniert nicht mit der Objectid

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.

  1. Sie könnten ObjectIds anstelle von Strings für die webpageid speichern -Element in den results Sammlung. Die Umsetzung davon hängt natürlich davon ab, wie diese Dokumente in die Sammlung gelangen.
  2. 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.