Seus webpageids são strings, enquanto os _ids com os quais você está pesquisando são ObjectIds. Sua localização não corresponde a nenhum resultado porque não há documentos na tabela de resultados que tenham valores ObjectId para o elemento "webpageid".
Existem duas soluções, como eu vejo.
- Você pode armazenar ObjectIds em vez de strings para o
webpageid
elemento nosresults
coleção. A implementação disso é, obviamente, baseada em como esses documentos entram na coleção. -
Você pode criar uma variável de string do ObjectIddentro do loop para comparar. Por exemplo,
... 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) ...
Se você optar pela segunda opção, talvez seja necessário verificar por que há uma citação inicial no início do
webpageid
valor para o segundo documento em results
coleção. "webpageid" : "\"54960a916ecb16dc3c4880e8"
Por fim, não sei muito sobre seus requisitos, mas você pode querer repensar o MongoDB como uma solução. Parece que você está criando algo como um JOIN, algo que o MongoDB não foi projetado para lidar muito bem.