MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Temuan Mongodb tidak berfungsi dengan Objectid

Halaman web Anda adalah string sedangkan _id yang Anda cari adalah ObjectIds. Temuan Anda tidak cocok dengan hasil apa pun karena tidak ada dokumen di tabel hasil yang memiliki nilai ObjectId untuk elemen "webpageid".

Ada dua solusi seperti yang saya lihat.

  1. Anda dapat menyimpan ObjectIds alih-alih string untuk webpageid elemen dalam results koleksi. Implementasinya tentu saja didasarkan pada bagaimana dokumen-dokumen tersebut masuk ke dalam koleksi.
  2. Anda dapat membuat variabel string dari ObjectId dalam loop untuk membandingkan sebagai gantinya. Misalnya,

    ...
    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)
        ...
    

Jika Anda memilih opsi kedua, Anda mungkin perlu melihat mengapa ada kutipan utama di awal webpageid nilai untuk dokumen kedua di results koleksi.

"webpageid" : "\"54960a916ecb16dc3c4880e8"

Terakhir, saya tidak tahu banyak tentang persyaratan Anda, tetapi Anda mungkin ingin memikirkan kembali MongoDB sebagai solusi. Tampaknya Anda membuat sesuatu seperti GABUNG yang merupakan sesuatu yang tidak dirancang untuk ditangani dengan baik oleh MongoDB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kata yang sama tetapi karakter unicode yang berbeda

  2. Cara Mengabaikan Kesalahan Kunci Duplikat dengan Aman Menggunakan insert_many

  3. Batasi Penggunaan RAM MongoDB

  4. luwak menemukan dokumen dengan properti referensi

  5. Hasil kueri .find luwak berisi metadata kueri? tidak bisa secara manual memproyeksikan setiap properti koleksi, bagaimana cara mendapatkan dokumennya saja?