Mongo Koleksiyonunu JSON formatına aktarın


119

Mongo koleksiyonunu json formatına dökmenin bir yolu var mı? Ya kabukta ya da java sürücüsü kullanarak, en iyi performansa sahip olanı arıyorum.


mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminBelirtebilirsiniz host, port, username, passwordbu ve varsayılan kimlik doğrulama veritabanı gibi admin.
Max Peng

Yanıtlar:


177

Mongo, bir koleksiyon dökümü yapabilen bir mongoexport yardımcı programı (dokümanlara bakın) içerir. Bu yardımcı program yerel libmongoclient kullanır ve muhtemelen en hızlı yöntemdir.

mongoexport -d <database> -c <collection_name>

Ayrıca yararlı:

-o: çıktıyı dosyaya yaz, aksi takdirde standart çıktı kullanılır ( docs )

--jsonArray: satır başına bir json nesnesi yerine geçerli bir json belgesi oluşturur ( belgeler )

--pretty: biçimlendirilmiş json ( dokümanlar ) çıktılar


8
Hangi veritabanının kullanılacağını belirtmek için -d işaretini kullanın.
Reimund

8
Oldukça basılı bir JSON istiyorsanız (örneğin, geliştirme sırasında bir koleksiyonu incelemek için) şu --prettybayrağı kullanın :mongoexport -d mydatabase -c mycollection --pretty
Max Truxa

6
Mongo farklı bir ana bilgisayarda bulunuyorsa, işte Mongo belgesinden bir örnek mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
What would Be Cool,

--pretty2.6.10 sürümünden itibaren gitmiş gibi görünüyor .
icedwater

115

Bir koleksiyonu boşaltmak / geri yüklemek için mongoexport / mongoimport kullanın:

JSON Dosyasını Dışa Aktar :

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

JSON Dosyasını İçe Aktar :

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

UYARI mongoimportve mongoexporttüm zengin BSON veri türlerini güvenilir bir şekilde korumayın çünkü JSON, BSON tarafından desteklenen türlerin yalnızca bir alt kümesini temsil edebilir. Sonuç olarak, bu araçlarla dışa aktarılan veya içe aktarılan veriler bir miktar doğruluk kaybına uğrayabilir.

Ayrıca, http://bsonspec.org/

BSON, hızlı kodlama ve kod çözme için tasarlanmıştır. Örneğin, tamsayılar 32 (veya 64) bitlik tamsayılar olarak saklanır, bu nedenle metne ve metinden ayrıştırılmaları gerekmez. Bu, küçük tam sayılar için JSON'dan daha fazla alan kullanır, ancak ayrıştırılması çok daha hızlıdır.

Kompaktlığa ek olarak BSON, JSON'da bulunmayan ek veri türlerini, özellikle BinData ve Date veri türlerini ekler.


1
"Zengin BSON verilerinin" bir mongoexport/ mongoimportgidiş-dönüş yolculuğunda hayatta kalamayacağına dair bir örnek var mı ?
andrewdotn

1
JSON'da desteklenmeyen Date ve binary gibi veri türleri için destek ekler. Ayrıca, bsonspec.org'u
Priyanshu Chauhan

5

İşte referans için benim komutum:

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

Windows 7 (MongoDB 3.4) üzerinde bir yere cmd taşımak zorundadır mongod.exeve mongo.exedosya bulunduğu => C:\MongoDB\Server\3.4\binbaşka buna recongnize does not söyleyerek çalışmayacak mongoexportkomutu.


MongoDB'nin içe aktarırken beklediği aptal "tek satırlı virgül yok" biçimine normal json'ı biçimlendirecek bir biçimlendiriciyi bilen var mı?
conor909

3

Mongo belgelerinden:

Mongoexport yardımcı programı bir koleksiyon alır ve JSON veya CSV'ye aktarır. Sorgu için bir filtre veya çıktısı alınacak alanların bir listesini belirtebilirsiniz.

Daha fazlasını buradan okuyun: http://www.mongodb.org/display/DOCS/mongoexport


-2

Tüm koleksiyonları dökmek istiyorsanız şu komutu çalıştırın:

mongodump -d {DB_NAME}   -o /tmp 

Dizindeki tüm koleksiyon verilerini jsonve bsonuzantıları oluşturacaktır./tmp/{DB_NAME}


Aslına bakarsan, hala bson ve metadata.bson'ı döküyor :-(
Prasad

9
Bu cevap yanlış. mongodumpverileri BSONformatta çıkarır. mongoexportDoğru araç olarak adlandırılan diğer cevaplar .
Christian Dechery

Bu benim için çalışıyor, tüm koleksiyonu bson ve json dosyalarıyla bir tmp klasörüne çıkarıyor. Mongodump -d {dbname} -o tmp
shyamzzp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.