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
}