Alat Database MongoDB menyertakan utilitas yang disebut mongoexport
yang memungkinkan Anda mengekspor data MongoDB ke file CSV atau JSON.
Salah satu hal yang dapat Anda lakukan dengan utilitas ini adalah mengekspor hasil kueri. Artikel ini menunjukkan cara menggunakan mongoexport
untuk mengekspor hasil kueri MongoDB ke file CSV.
Sintaks
Sintaks untuk mongoexport
seperti ini:
mongoexport --collection=<coll> <options> <connection-string>
Anda perlu menjalankan mongoexport
perintah dari baris perintah sistem Anda (mis. Terminal baru atau jendela Prompt Perintah).
Jangan jalankan mongoexport
perintah dari mongo
kerang.
Contoh
Contoh kode berikut mengekspor hasil kueri ke file CSV:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
Ini mengekspor kueri yang menanyakan koleksi yang disebut pets
di PetHotel
basis data. Kueri diekspor ke file bernama dogs.csv
di data/
map.
Jika folder tidak ada, itu dibuat. Sama dengan filenya. Omong-omong, ini mengasumsikan bahwa tidak ada masalah izin dengan menulis file ke lokasi yang ditentukan.
Dalam contoh ini saya tidak menentukan host, port, otentikasi, dll, sehingga mengekspor koleksi dari instance MongoDB yang berjalan pada nomor port localhost default 27017
.
Di bawah ini adalah penjelasan dari parameter yang kami berikan di sini.
Parameter | Deskripsi |
---|---|
--db atau -d | Menentukan database untuk menjalankan mongoexport . Dalam hal ini, databasenya disebut PetHotel . Parameter ini sebagai alternatif dapat diteruskan menggunakan -d (bukan --db ). |
--collection atau -c | Menentukan koleksi yang ingin kami ekspor (atau menjalankan kueri). Dalam hal ini, koleksinya disebut pets . Parameter ini dapat diteruskan sebagai -c (bukan --collection ). |
--type | Menentukan jenis file yang diekspor. Dalam hal ini kita tentukan csv untuk mengekspornya ke file CSV. |
--fields | Menentukan bidang yang ingin kita ekspor. Kami memiliki opsi untuk mengekspor semua bidang atau hanya beberapa. Anda perlu mendaftar masing-masing di sini, dipisahkan dengan koma. Saat mengekspor ke CSV, menentukan nama bidang adalah persyaratan. Anda dapat melakukannya melalui --fields parameter atau --fieldFile parameter (lebih lanjut tentang itu nanti). |
--query atau -q | Menentukan kueri hasil yang ingin kita ekspor. Ini harus diapit oleh tanda kutip tunggal (agar tidak berinteraksi dengan shell Anda). Parameter ini juga dapat diteruskan menggunakan -q . |
--out | Menentukan nama file yang diekspor dan lokasinya. Jika Anda tidak menentukan nama file, mongoexport menulis data ke output standar (stdout ). |
Periksa File yang Diekspor
Mari kita verifikasi bahwa operasi ekspor bekerja seperti yang diharapkan.
Pertama, mari kita jalankan kueri terhadap koleksi aslinya.
use PetHotel
db.pets.find({ "type": "Dog" })
Hasil:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Jadi kita bisa melihat ada 4 anjing, semuanya dengan field yang sama yang kita tentukan dalam operasi ekspor kita.
Sekarang mari kita buka file yang diekspor dogs.csv
untuk melihat apa yang ada di dalamnya:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 6,Fetch,Dog,17 7,Jake,Dog,30
Oke, jadi semua data ada di file yang diekspor seperti yang diharapkan.
Ekspor Lebih Sedikit Bidang
Anda dapat menentukan lebih sedikit bidang dengan --fields
parameter jika Anda mau.
Contoh:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
File yang dihasilkan:
name,weight Wag,20 Bark,10 Fetch,17 Jake,30
Hapus Tajuk Kolom
Anda akan melihat bahwa file yang diekspor pada contoh sebelumnya menyertakan header kolom.
Anda juga memiliki opsi untuk mengekspor file tanpa header kolom. Untuk melakukannya, gunakan --noHeaderLine
parameter.
Contoh:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --noHeaderLine --out=data/dogs.csv
Sekarang ketika saya membuka file yang diekspor, tidak ada header kolom:
1,Wag,Dog,20 2,Bark,Dog,10 6,Fetch,Dog,17 7,Jake,Dog,30
Gunakan File untuk Nama Bidang
Anda dapat mengganti --field
parameter dengan --fieldFile
parameter untuk menentukan nama file yang berisi nama bidang yang ingin Anda ekspor.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/dogs_fields.txt --query='{ "type": "Dog" }' --out=data/dogs.csv
File yang berisi bidang harus memiliki bidang yang terdaftar, satu per baris.
Inilah yang dogs_fields.txt
file tampak seperti contoh ini:
name type weight
Ini mengakibatkan isi file yang diekspor terlihat seperti ini:
name,type,weight Wag,Dog,20 Bark,Dog,10 Fetch,Dog,17 Jake,Dog,30
Mengubah Urutan Kolom
Anda dapat mengganti urutan bidang yang akan diekspor. Mereka tidak harus berada dalam urutan yang sama dengan dokumen yang mendasarinya.
Misalnya, kode ini:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --query='{ "type": "Dog" }' --out=data/dogs.csv
Hasil dalam file CSV berikut:
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 Dog,Fetch,17,6 Dog,Jake,30,7
Kontrol Akses/Otentikasi
Jika Anda tidak menggunakan localhost, Anda dapat menggunakan --host
parameter untuk menentukan host, dan --port
untuk menentukan port. Anda juga dapat menggunakan --username
parameter untuk menentukan nama pengguna dan --password
ke untuk kata sandi. Jika Anda menghilangkan parameter kata sandi, Anda akan diminta untuk memasukkannya. Ada juga --authenticationDatabase
parameter untuk menentukan database otentikasi tempat pengguna telah dibuat.
Contoh:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
Periksa mongoexport
mongoexport
adalah bagian dari paket Alat Database MongoDB. Alat Database MongoDB adalah rangkaian utilitas baris perintah untuk bekerja dengan MongoDB.
Jika Anda tidak yakin apakah Anda memiliki MongoDB Database Tools/mongoexport
terinstal, coba jalankan perintah berikut di Terminal atau Command Prompt Anda untuk memeriksa:
mongoexport --version
Jika Anda memilikinya, Anda akan melihat informasi versi, dll. Jika Anda tidak memilikinya, Anda dapat menggunakan petunjuk penginstalan di situs web MongoDB untuk menginstalnya ke sistem Anda.
Di mana Menjalankan Perintah?
Jangan lupa, Anda harus menjalankan mongoexport
perintah dari baris perintah sistem Anda (mis. Terminal baru atau jendela Prompt Perintah).