Vos identifiants de page Web sont des chaînes tandis que les _ids avec lesquels vous recherchez sont des ObjectIds. Votre recherche ne correspond à aucun résultat car il n'y a aucun document dans le tableau des résultats qui ait des valeurs ObjectId pour l'élément "webpageid".
Il y a deux solutions à mon avis.
- Vous pouvez stocker des ObjectIds au lieu de chaînes pour le
webpageid
élément dans lesresults
le recueil. La mise en œuvre de ceci est bien sûr basée sur la façon dont ces documents entrent dans la collection. -
Vous pouvez créer une variable de chaîne à partir de l'ObjectId dans la boucle pour comparer à la place. Par exemple,
... 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) ...
Si vous optez pour la deuxième option, vous devrez peut-être examiner pourquoi il y a une citation principale au début de l'webpageid
valeur pour le deuxième document dans les results
collecte.
"webpageid" : "\"54960a916ecb16dc3c4880e8"
Enfin, je ne sais pas grand-chose de vos besoins, mais vous voudrez peut-être repenser MongoDB en tant que solution. Il semble que vous créez quelque chose comme un JOIN, ce que MongoDB n'est pas conçu pour gérer très bien.