Untuk cadangan produksi, MongoDB merekomendasikan mongodump, bukan mongoexport untuk akurasi data. Namun, saya perlu "menggosok" data dari database MongoDB sebelum mencadangkannya. Saya tidak mengetahui adanya opsi scrubbing data sisi server selain mongoexport . Dua pertanyaan:
- Apakah mongoexport mengakses cache MongoDB dalam RAM? Apakah itu mengubah set kerja di RAM seperti yang dilakukan mongodump ?
- perintah mongodump memiliki opsi --query ini . "Menyediakan dokumen JSON sebagai kueri yang secara opsional membatasi dokumen yang disertakan dalam output mongodump." Apakah diperlukan kueri untuk mengecualikan bidang tertentu dalam dokumen?
mongodump
cadangan snapshot sistem file atau normal , atau menulis ekspor kustom jikamongoexport
tidak melakukan apa yang Anda butuhkan. Alat atau program apa pun yang membaca datamongod
dapat mengubah set kerja Anda jika data yang akan diekspor lebih besar daripada RAM yang tersedia. Snapshots filesystem tidak terlalu menggangguJawaban:
Sebagai jawaban untuk pertanyaan pertama Anda, kedua alat (secara default) hanya akan berjalan
_id
indeks untuk mengambil data dan kemudian menuliskannya ke disk. Jadi, ya, kedua alat ini akan berdampak pada perangkat kerja Anda, itulah sebabnya saya biasanya merekomendasikan untuk menjalankannya terhadap yang sekunder (lebih disukai yang tersembunyi jika mungkin). Saya akan mengulangi komentar Stennie di sini dan merekomendasikan metode cadangan lain jika Anda berurusan dengan data dalam jumlah besar.Untuk pertanyaan kedua, saya berasumsi Anda sedang mencari opsi yang
mongodump
setara dari hanya membuang bidang tertentu. The opsi query dapat digunakan untuk hasil filter, tetapi tidak dapat digunakan dengan proyeksi (untuk memilih bidang kembali) - ini adalah permintaan fitur yang sedang dilacak dalam ALAT-28 namun belum dijadwalkan. Seperti Stennie juga sebutkan, opsi lain di sini adalah untuk menulis eksportir kustom yang sesuai dengan kebutuhan Anda (dan sekali lagi, saya masih merekomendasikan menjalankannya terhadap sekunder untuk melindungi set kerja Anda).--fields
mongoexport
sumber
(maaf, tidak tahu)
--query akan memilih atau mengecualikan seluruh dokumen, bukan bidang.
Akan lebih baik jika:
sumber
Mongoexport sebenarnya mempertahankan tipe tetapi membuat data tidak konsisten. Jika Anda mengekspor bidang dengan Ints dan Longs, itu akan mengekspornya masing-masing sebagai Angka dan objek JSON, yang dapat mempersulit jalan.
"Mode ketat. Representasi mode ketat tipe BSON sesuai dengan JSON RFC. Setiap parser JSON dapat menguraikan representasi mode ketat ini sebagai pasangan kunci / nilai; namun, hanya parser JSON internal MongoDB yang mengenali informasi jenis yang disampaikan oleh format."
https://docs.mongodb.com/manual/reference/mongodb-extended-json/
sumber