MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongodb find non funziona con Objectid

I tuoi webpageid sono stringhe mentre gli _id con cui stai cercando sono ObjectIds. La tua ricerca non corrisponde ad alcun risultato perché non ci sono documenti nella tabella dei risultati che hanno valori ObjectId per l'elemento "webpageid".

Ci sono due soluzioni per come la vedo io.

  1. Potresti memorizzare ObjectId invece di stringhe per webpageid elemento nei results collezione. L'implementazione di questo si basa ovviamente su come quei documenti entrano nella collezione.
  2. È possibile creare una variabile stringa da ObjectId all'interno del ciclo per confrontare invece. Ad esempio,

    ...
    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 scegli la seconda opzione, potresti dover esaminare il motivo per cui c'è una citazione iniziale all'inizio di webpageid valore per il secondo documento nei results raccolta.

"webpageid" : "\"54960a916ecb16dc3c4880e8"

Infine, non so molto delle tue esigenze, ma potresti voler ripensare a MongoDB come una soluzione. Sembra che tu stia creando qualcosa come un JOIN che è qualcosa che MongoDB non è progettato per gestire molto bene.