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

Mencoba mengisi luwak hanya jika ref bukan nol - tidak berfungsi

Anda perlu memahami urutan eksekusi kode Anda:

  1. luwak mendapatkan semua buku dari database di mana {_creator:{$ne:null}} . Mongo hanya melihat referensi di dalam koleksi buku untuk menentukan dokumen mana yang akan dikembalikan. Buku Anda masih memiliki referensi ke seorang penulis, dan mongo tidak akan melihat bahwa tidak ada Penulis yang cocok dalam koleksi Penulis, sehingga buku Anda dimuat.

  2. luwak mengisi semua hasil yang dikembalikan:sehingga memuat penulis dari koleksi Penulis dan mengganti referensi dengan objek nyata. Untuk buku Anda tidak menemukan penulis yang cocok, sehingga menempatkan null di sana.

Itulah mengapa Anda berakhir dengan daftar hasil Anda.

Mongo tidak mendukung penggabungan - oleh karena itu Anda tidak dapat melakukan kueri yang menyertakan data dari lebih dari satu koleksi. Mengisi hanyalah cara untuk mengganti referensi di daftar hasil Anda dengan data nyata, Anda tidak akan pernah dapat menggunakan data yang diisi sebagai bagian dari klausa where Anda.

Untuk mengatasi masalah Anda, Anda dapat:

  • filter daftar hasil akhir Anda dalam kode JS, mis. dengan _.filter dari perpustakaan lodash.
  • perbarui semua buku Anda dan hapus referensi setiap kali Anda menghapus seorang penulis. Anda dapat menggunakan pengait pada Skema Penulis untuk melakukan ini.

AuthorSchema.post('remove', function(doc) {// update your books here});




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apakah ada fungsi lantai dalam kerangka agregasi Mongodb?

  2. Node menyisipkan data besar menggunakan luwak

  3. Fitur tidak didukung:$teks dalam dokumen db dengan kompatibilitas mongodb 3.6

  4. Apa cara yang benar untuk meminta MongoDB untuk _id menggunakan string dengan menggunakan Python?

  5. cara menggunakan ObjectId dengan benar di luwak