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

MongoDB dan Mongoose:Array Bersarang dari ID Referensi Dokumen

Mengenai pertanyaan pertama Anda:

Anda secara khusus meminta cara yang lebih baik untuk bekerja dengan ID anak yang disimpan di induk. Saya cukup yakin bahwa tidak ada cara yang lebih baik untuk mengatasi hal ini, jika harus dengan pola ini.

Tapi masalah ini juga ada di database relasional. Jika Anda ingin menyimpan posting Anda di database relasional (menggunakan pola itu), Anda juga harus membuat komentar terlebih dahulu, mendapatkan ID-nya, dan kemudian memperbarui posting. Memang, Anda dapat mengirim semua tugas ini dalam satu permintaan, yang mungkin lebih efisien daripada menggunakan luwak, tetapi jenis pekerjaan yang perlu dilakukan adalah sama.

Mengenai pertanyaan kedua Anda:

Keuntungannya dibandingkan varian A adalah, misalnya Anda bisa mendapatkan postingan, dan langsung mengetahui berapa banyak komentar yang dimilikinya, tanpa meminta mongodb untuk membaca mungkin ratusan dokumen.

Keuntungan dari varian B adalah, Anda dapat menyimpan lebih banyak referensi untuk berkomentar dalam satu dokumen (satu pos), daripada keseluruhan komentar, karena batas ukuran dokumen mongos 16MB.

Namun Kelemahannya adalah yang Anda sebutkan, bahwa tidak efisien untuk mempertahankan struktur itu. Menurut saya, ini hanya contoh untuk menampilkan skenario, jadi inilah yang akan saya lakukan:Saya akan memutuskan berdasarkan kasus per kasus apa yang akan digunakan.

  • Jika dokumen akan banyak dibaca, dan tidak banyak ditulis, DAN itu tidak mungkin tumbuh lebih besar dari 16MB:Sematkan sub-dokumen. dengan cara ini Anda bisa mendapatkan semua data dalam satu kueri.

  • Jika Anda perlu mereferensikan dokumen dari beberapa dokumen lain DAN data Anda benar-benar harus konsisten, maka Anda tidak punya pilihan selain merujuknya.

  • Jika Anda perlu mereferensikan dokumen dari beberapa dokumen lain TAPI konsistensi data tidak terlalu penting DAN pembatasan dari bulletpoint pertama berlaku, kemudian menyematkan sub-dokumen, dan menulis kode untuk menjaga data Anda tetap konsisten.

  • Jika Anda perlu mereferensikan dokumen dari beberapa dokumen lain, dan banyak ditulis, tetapi tidak sering dibaca, Anda mungkin lebih baik merujuknya, karena ini lebih mudah untuk dikodekan, karena Anda tidak perlu menulis kode untuk menyinkronkan data duplikat.

Dalam kasus khusus ini (postingan/komentar) merujuk orang tua dari anak (memberi tahu anak _id orang tua ) mungkin merupakan ide yang bagus, karena lebih mudah dirawat daripada sebaliknya, dan dokumen mungkin bertambah lebih besar dari 16 MB jika disematkan secara langsung. Jika saya tahu pasti, bahwa dokumen TIDAK akan lebih besar dari lebih dari 16 MB, menyematkannya akan lebih baik, karena lebih cepat untuk menanyakan data seperti itu




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menemukan celah dalam aliran acara besar?

  2. Cara terbaik untuk membuat ekspresi mongo yang tidak pernah cocok

  3. Ubah keymap menjadi vektor menggunakan kerangka MongoDB

  4. moveChunk gagal menggunakan TO-shard dalam transfer data:tidak dapat menerima potongan baru karena

  5. Bagaimana saya bisa mengambil dokumen yang dimodifikasi setelah operasi pembaruan di mongodb dengan pymongo?