Saya ingin mengekspor semua koleksi di MongoDB dengan perintah:
mongoexport -d dbname -o Mongo.json
Hasilnya adalah:
Tidak ada koleksi yang ditentukan!
Manual mengatakan, jika Anda tidak menentukan koleksi, semua koleksi akan diekspor.
Namun, mengapa ini tidak berhasil?
http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection
Versi MongoDB saya adalah 2.0.6.
Jawaban:
Untuk orang malas, gunakan
mongodump
, lebih cepat:Dan untuk "mengembalikan / mengimpornya" (dari directory_backup / dump /):
Dengan cara ini, Anda tidak perlu menangani semua koleksi secara individual. Cukup tentukan database.
Perhatikan bahwa saya akan merekomendasikan untuk tidak menggunakan
mongodump
/mongorestore
untuk penyimpanan data besar . Ini sangat lambat dan setelah Anda melewati 10 / 20GB data, butuh berjam-jam untuk memulihkan.sumber
Saya menulis bash script untuk itu. Jalankan saja dengan 2 parameter (nama database, dir untuk menyimpan file).
sumber
for file in *.json; do c=${file#*exp_yourdbname_}; c=${c%.json}; mongoimport --db yourdbname --collection "${c}" --file "${file}"; done
Ikuti langkah-langkah di bawah ini untuk membuat mongodump dari server dan impor server lain / mesin lokal yang memiliki nama pengguna dan kata sandi
sumber
Mengekspor semua koleksi menggunakan mongodump menggunakan perintah berikut
mongodump -d database_name -o directory_to_store_dumps
Untuk memulihkan, gunakan perintah ini
sumber
mongodump -d mongo -o path\to\Desktop\blog
dan saya dapatkanSyntaxError: missing ; before statement
dari CMD. :(Beri tahu kami di mana Anda telah menginstal Mongo DB Anda? (baik di Ubuntu atau di Windows)
Untuk Windows:
mongodump --db nama database --out path untuk menyimpan
mis: mongodump --db mydb --out c: \ TEMP \ op.json
Untuk Ubuntu:
mongodump -d nama database -o nama file yang akan disimpan
misalnya: mongodump -d mydb -o output.json
sumber
Jawaban sebelumnya menjelaskannya dengan baik, saya menambahkan jawaban saya untuk membantu jika Anda berurusan dengan basis data yang dilindungi kata sandi jarak jauh
sumber
Jika Anda ingin menghubungkan server mongoDB jarak jauh seperti mongolab.com, Anda harus memberikan kredensial koneksi misalnya.
sumber
Jika Anda OK dengan format bson, maka Anda dapat menggunakan utilitas mongodump dengan flag -d yang sama. Ini akan membuang semua koleksi ke direktori dump (default, dapat diubah melalui opsi -o) dalam format bson. Anda kemudian dapat mengimpor file-file ini menggunakan utilitas mongorestore.
sumber
Anda dapat menggunakan
mongo --eval 'printjson(db.getCollectionNames())'
untuk mendapatkan daftar koleksi dan kemudian melakukan mongoexport pada semuanya. Berikut adalah contoh di rubysumber
out.scan(/\".+?\"/).map { |s| s.gsub('"', '') }
Saya membutuhkan versi skrip batch Windows. Utas ini bermanfaat, jadi saya pikir saya akan berkontribusi juga untuk jawaban saya.
Saya punya beberapa masalah menggunakan
set /p COLLECTIONS=<__collections.txt
, makafor /f
metode berbelit-belit .sumber
Saya menemukan setelah mencoba banyak contoh berbelit-belit bahwa pendekatan yang sangat sederhana bekerja untuk saya.
Saya hanya ingin mengambil dump dari db dari lokal dan mengimpornya secara remote:
di mesin lokal:
maka saya scp'd dump saya ke mesin server saya:
lalu dari dir induk dari dump hanya:
dan yang mengimpor basis data.
dengan asumsi layanan mongodb berjalan tentu saja.
sumber
Jika mau, Anda dapat mengekspor semua koleksi ke csv tanpa menentukan
--fields
(akan mengekspor semua bidang).Dari http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/ jalankan skrip bash ini
sumber
Anda dapat melakukannya menggunakan perintah mongodump
File yang diekspor akan dibuat di folder destination_path \ your_db_name (dalam contoh ini C: \ Users \ HP \ Desktop \ test)
Referensi: perencanaan
sumber
Jika Anda ingin membuang semua koleksi di semua basis data (yang merupakan interpretasi luas dari maksud penanya asli) maka gunakan
Semua database dan koleksi akan dibuat di direktori yang disebut 'dump' di lokasi 'saat ini'
sumber
Saya menyadari bahwa ini adalah pertanyaan yang cukup lama dan bahwa mongodump / mongorestore jelas merupakan cara yang tepat jika Anda menginginkan hasil yang 100% setia, termasuk indeks.
Namun, saya membutuhkan solusi cepat dan kotor yang mungkin kompatibel dengan versi maju dan mundur antara MongoDB versi lama dan baru, asalkan tidak ada yang aneh terjadi. Dan untuk itu saya menginginkan jawaban untuk pertanyaan awal.
Ada solusi lain yang dapat diterima di atas, tetapi pipa Unix ini relatif pendek dan manis:
Ini menghasilkan
.json
file dengan nama yang sesuai untuk setiap koleksi.Perhatikan bahwa nama database ("mydatabase") muncul dua kali. Saya berasumsi bahwa basis datanya adalah lokal dan Anda tidak perlu memberikan kredensial tetapi mudah melakukannya dengan keduanya
mongo
danmongoexport
.Perhatikan bahwa saya menggunakan
grep -v
untuk membuangsystem.indexes
, karena saya tidak ingin versi MongoDB yang lebih lama mencoba menafsirkan kumpulan sistem dari yang lebih baru. Alih-alih, saya mengizinkan aplikasi saya melakukanensureIndex
panggilan biasa untuk membuat ulang indeks.sumber
Anda dapat membuat file zip dengan menggunakan perintah berikut. Ini akan membuat file zip dari database {dbname} yang disediakan. Anda kemudian dapat mengimpor file zip berikut di Anda mongo DB.
sumber
Inilah yang bekerja untuk saya ketika memulihkan database yang diekspor:
mongorestore -d 0 ./0 --drop
di mana ./contained file bson yang diekspor. Perhatikan bahwa
--drop
akan menimpa data yang ada.sumber
jika Anda ingin menggunakan mongoexport dan mongoimport untuk mengekspor / mengimpor setiap koleksi dari basis data, saya pikir utilitas ini dapat membantu Anda. Saya telah menggunakan utilitas serupa beberapa kali;
sumber
Jika Anda ingin mencadangkan semua dbs di server, tanpa harus khawatir db dipanggil, gunakan skrip shell berikut:
Ini menggunakan utilitas mongodump, yang akan membuat cadangan semua DB jika tidak ada yang ditentukan.
Anda dapat menempatkan ini di cronjob Anda, dan itu hanya akan berjalan jika proses mongod sedang berjalan. Itu juga akan membuat direktori cadangan jika tidak ada.
Setiap cadangan DB ditulis ke direktori individual, sehingga Anda dapat mengembalikan DB individual dari dump global.
sumber
Pertama, dari Mulai Mongo DB - untuk itu pergi ke jalan sebagai ->
C: \ Program Files \ MongoDB \ Server \ 3.2 \ bin dan klik file mongod.exe untuk memulai server MongoDB.
Perintah di Windows untuk Ekspor
C:> mongodump --host remote_ip_address: 27017 --db -o C: / Users / Desktop / temp-folder
Perintah di Windows untuk Mengimpor
C:> mongorestore --host = ip --port = 27017 -d C: / Users / Desktop / temp-folder / db-dir
sumber
sumber
Ekspor:
mongo/bin> mongoexport -d webmitta -c domain -o domain-k.json
Impor:
mongoimport -d dbname -c newCollecionname --file domain-k.json
Dimana
sumber
Ada beberapa opsi tergantung pada apa yang ingin Anda lakukan
1) Jika Anda ingin mengekspor database Anda ke database mongo lain, Anda harus menggunakan
mongodump
. Ini membuat folder file BSON yang memiliki metadata yang tidak dimiliki JSON.2) Jika Anda ingin mengekspor database Anda ke JSON, Anda dapat menggunakan
mongoexport
kecuali Anda harus melakukannya satu koleksi pada satu waktu (ini adalah dengan desain). Namun saya pikir paling mudah untuk mengekspor seluruh database denganmongodump
dan kemudian dikonversi ke JSON.sumber
Untuk dump, DB Anda memberikan CMD di bawah ini
sumber
Untuk mengekspor dalam format JSON, lakukan ini dengan mengikuti perintah yang dapat Anda lihat.
sumber