sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongodb find no funciona con Objectid

Tus webpageids son cadenas mientras que los _ids con los que estás buscando son ObjectIds. Su búsqueda no coincide con ningún resultado porque no hay documentos en la tabla de resultados que tengan valores de ObjectId para el elemento "webpageid".

Hay dos soluciones como yo lo veo.

  1. Podría almacenar ObjectIds en lugar de cadenas para el webpageid elemento en los results recopilación. La implementación de esto, por supuesto, se basa en cómo esos documentos ingresan a la colección.
  2. Puede crear una variable de cadena a partir del ObjectId dentro del bucle para comparar en su lugar. Por ejemplo,

    ...
    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 elige la segunda opción, es posible que deba investigar por qué hay una cita principal al comienzo de webpageid valor para el segundo documento en los results colección.

"webpageid" : "\"54960a916ecb16dc3c4880e8"

Por último, no sé mucho acerca de sus requisitos, pero es posible que desee repensar MongoDB como una solución. Parece que está creando algo como JOIN, algo que MongoDB no está diseñado para manejar muy bien.