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

MongoDB:Haruskah Anda Mengalokasikan Dokumen terlebih dahulu jika Menggunakan $addToSet atau $push?

Direkomendasikan jika layak untuk kasus penggunaan, yang biasanya tidak. Data deret waktu adalah pengecualian. Itu tidak benar-benar berlaku dengan $addToSet dan $push karena mereka cenderung memperbesar ukuran dokumen dengan menumbuhkan array.

Berhenti. Apakah Anda yakin ingin terus mengembangkan array dengan puluhan ribu entri? Apakah Anda akan meminta entri tertentu kembali? Apakah Anda akan mengindeks bidang apa pun dalam entri array? Anda mungkin ingin memikirkan kembali struktur dokumen Anda. Mungkin Anda ingin setiap data entri menjadi dokumen terpisah dengan bidang seperti market , type , createdAt direplikasi di masing-masing? Anda tidak perlu khawatir tentang pemindahan dokumen.

Mengapa array akan bertambah menjadi 75 ribu entri? Bisakah Anda melakukan lebih sedikit entri per dokumen? Apakah ini data deret waktu ? Sangat bagus untuk dapat melakukan pra-alokasi dokumen dan melakukan pembaruan di tempat dengan mesin penyimpanan mmap, tetapi itu tidak layak untuk setiap kasus penggunaan dan itu bukan persyaratan bagi MongoDB untuk bekerja dengan baik.

Tidak, ini tidak terlalu membantu. Ukuran dokumen akan dihitung berdasarkan ukuran BSON dari nilai null dalam larik, jadi saat Anda mengganti null dengan tipe lain, ukurannya akan bertambah dan Anda tetap akan mendapatkan penulisan ulang dokumen. Anda perlu mengalokasikan terlebih dahulu larik dengan objek dengan semua bidang disetel ke nilai default untuk jenisnya, mis.

{
    "date" : ISODate("1970-01-01T00:00:00Z")    // use a date type instead of a string date
    "price" : 0,
    "amount" : 0,
    "tid" : "000000", // assuming 7 character code - strings icky for default preallocation
    "type" : "none"    // assuming it's "buy" or "sell", want a default as long as longest real values
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. node paspor Kesalahan:Strategi otentikasi tidak dikenal masuk-lokal

  2. Memformat Angka sebagai Mata Uang dalam SQL

  3. Menemukan celah dalam aliran acara besar?

  4. Mongoose + lodash memperpanjang penyalinan array objek secara tidak benar

  5. Pertimbangan Dasar untuk Mengambil Cadangan MongoDB