Buang Koleksi Mongo ke dalam format JSON

119

Apakah ada cara untuk membuang koleksi mongo ke dalam format json? Baik di shell atau menggunakan driver java. Saya mencari driver dengan performa terbaik.

Parvin Gasimzade
sumber
mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminAnda dapat menentukan host, port, username, passwordseperti ini dan database otentikasi default adalah admin.
Max Peng

Jawaban:

177

Mongo menyertakan utilitas mongoexport (lihat dokumen) yang dapat membuang koleksi. Utilitas ini menggunakan libmongoclient asli dan kemungkinan merupakan metode tercepat.

mongoexport -d <database> -c <collection_name>

Juga membantu:

-o: tulis output ke file, jika tidak, output standar digunakan ( docs )

--jsonArray: menghasilkan dokumen json yang valid, alih-alih satu objek json per baris ( docs )

--pretty: output berformat json ( dokumen )

vrtx
sumber
8
Gunakan tanda -d untuk menentukan database yang akan digunakan.
Reimund
8
Jika Anda ingin JSON tercetak cantik (misalnya untuk memeriksa koleksi selama pengembangan) gunakan --prettybendera:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa
6
Jika Mongo berada di host yang berbeda, berikut adalah contoh dari dokumen Mongo mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
What Would Be Cool
Sepertinya --prettysudah hilang pada versi 2.6.10.
es
115

Gunakan mongoexport / mongoimport untuk membuang / memulihkan koleksi:

Ekspor File JSON :

mongoexport --db <database-name> --collection <collection-name> --out output.json

Impor File JSON :

mongoimport --db <database-name> --collection <collection-name> --file input.json

PERINGATAN mongoimportdan mongoexportjangan andal mempertahankan semua tipe data BSON yang kaya karena JSON hanya dapat mewakili subset dari tipe yang didukung oleh BSON. Akibatnya, data yang diekspor atau diimpor dengan alat ini mungkin kehilangan beberapa ukuran kesetiaan.

Juga, http://bsonspec.org/

BSON dirancang agar cepat untuk disandikan dan didekode. Misalnya, bilangan bulat disimpan sebagai bilangan bulat 32 (atau 64) bit, sehingga tidak perlu diurai ke dan dari teks. Ini menggunakan lebih banyak ruang daripada JSON untuk bilangan bulat kecil, tetapi jauh lebih cepat untuk diurai.

Selain kekompakan, BSON menambahkan tipe data tambahan yang tidak tersedia di JSON, terutama tipe data BinData dan Tanggal.

Priyanshu Chauhan
sumber
1
Apakah ada contoh dari apa yang “Data BSON kaya” tidak akan bertahan mongoexport/ mongoimportround trip?
andrewdotn
1
Ini menambahkan dukungan untuk tipe data seperti Tanggal dan biner yang tidak didukung di JSON. Juga, lebih cepat untuk encoding dan decoding bsonspec.org
Priyanshu Chauhan
5

Inilah perintah saya untuk referensi:

mongoexport --db AppDB --collection files --pretty --out output.json

Pada Windows 7 (MongoDB 3.4), seseorang harus memindahkan cmd ke tempat mongod.exedan mongo.exefile berada => C:\MongoDB\Server\3.4\binjika tidak itu tidak akan bekerja mengatakan itu tidak mengenali mongoexportperintah.

nightfury
sumber
Apakah ada yang tahu tentang formatter yang akan memformat json normal ke format konyol "baris tunggal tanpa koma" yang diharapkan MongoDB saat mengimpor?
conor909
3

Dari dokumentasi Mongo:

Utilitas mongoexport mengambil koleksi dan mengekspor ke JSON atau CSV. Anda dapat menentukan filter untuk kueri, atau daftar bidang yang akan dihasilkan

Baca lebih lanjut di sini: http://www.mongodb.org/display/DOCS/mongoexport

Ninja
sumber
-2

Jika Anda ingin membuang semua koleksi, jalankan perintah ini:

mongodump -d {DB_NAME}   -o /tmp 

Ini akan menghasilkan semua data koleksi jsondan bsonekstensi ke dalam /tmp/{DB_NAME}direktori

Moe Far
sumber
Faktanya itu masih membuang bson dan metadata.bson :-(
Prasad
9
Jawaban ini salah. mongodumpmengeluarkan data dalam BSONformat. Jawaban lain dengan tepat disebut mongoexportsebagai alat yang tepat.
Christian Dechery
Ini berfungsi untuk saya, menampilkan semua koleksi ke dalam folder tmp dengan file bson dan json. Saya menggunakan mongodump -d {dbname} -o tmp
shyamzzp