MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

A localização do Mongodb não está funcionando com o Objectid


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.
  1. Você pode armazenar ObjectIds em vez de strings para o webpageid elemento nos results coleção. A implementação disso é, obviamente, baseada em como esses documentos entram na coleção.

  2. Você pode criar uma variável de string do ObjectId dentro 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.