ถ่ายโอนข้อมูล Mongo Collection เป็นรูปแบบ JSON


119

มีวิธีใดในการถ่ายโอน mongo collection ในรูปแบบ json หรือไม่? ไม่ว่าจะเป็นบนเชลล์หรือใช้ไดรเวอร์ java ฉันกำลังมองหาสิ่งที่มีประสิทธิภาพดีที่สุด


mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminคุณสามารถระบุhost, port, username, เช่นนี้และฐานข้อมูลการตรวจสอบเริ่มต้นคือpassword admin
Max Peng

คำตอบ:


177

Mongo มียูทิลิตี้ mongoexport (ดูเอกสาร)ซึ่งสามารถถ่ายโอนคอลเล็กชันได้ ยูทิลิตี้นี้ใช้ libmongoclient ดั้งเดิมและน่าจะเป็นวิธีที่เร็วที่สุด

mongoexport -d <database> -c <collection_name>

ยังเป็นประโยชน์:

-o: เขียนผลลัพธ์ไปยังไฟล์มิฉะนั้นจะใช้เอาต์พุตมาตรฐาน ( เอกสาร )

--jsonArray: สร้างเอกสาร json ที่ถูกต้องแทนที่จะเป็นวัตถุ json หนึ่งรายการต่อบรรทัด ( เอกสาร )

--pretty: เอาต์พุต json ที่จัดรูปแบบ ( เอกสาร )


8
ใช้แฟล็ก -d เพื่อระบุฐานข้อมูลที่จะใช้
Reimund

8
หากคุณต้องการ JSON ที่พิมพ์ออกมาสวย ๆ (เช่นเพื่อตรวจสอบคอลเล็กชันระหว่างการพัฒนา) ให้ใช้--prettyแฟmongoexport -d mydatabase -c mycollection --pretty
ล็ก

6
หาก Mongo ตั้งอยู่บนโฮสต์อื่นนี่คือตัวอย่างจาก Mongo doc mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
What Will Be Cool

ดูเหมือนว่า--prettyจะหายไปในเวอร์ชัน 2.6.10
icedwater

115

ใช้ mongoexport / mongoimport เพื่อถ่ายโอนข้อมูล / เรียกคืนคอลเล็กชัน:

ส่งออกไฟล์ JSON :

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

นำเข้าไฟล์ JSON :

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

คำเตือน mongoimportและmongoexportอย่าเก็บรักษาชนิดข้อมูล BSON ที่สมบูรณ์ทั้งหมดไว้อย่างน่าเชื่อถือเนื่องจาก JSON สามารถแสดงเฉพาะบางส่วนของประเภทที่ BSON สนับสนุน ด้วยเหตุนี้ข้อมูลที่ส่งออกหรือนำเข้าด้วยเครื่องมือเหล่านี้อาจสูญเสียการวัดความเที่ยงตรงบางส่วน

นอกจากนี้http://bsonspec.org/

BSON ได้รับการออกแบบให้เข้ารหัสและถอดรหัสได้อย่างรวดเร็ว ตัวอย่างเช่นจำนวนเต็มจะถูกจัดเก็บเป็นจำนวนเต็ม 32 (หรือ 64) บิตดังนั้นจึงไม่จำเป็นต้องแยกวิเคราะห์จากข้อความ ใช้พื้นที่มากกว่า JSON สำหรับจำนวนเต็มขนาดเล็ก แต่แยกวิเคราะห์ได้เร็วกว่ามาก

นอกเหนือจากความกะทัดรัดแล้ว BSON ยังเพิ่มชนิดข้อมูลเพิ่มเติมที่ไม่มีใน JSON โดยเฉพาะอย่างยิ่งประเภทข้อมูล BinData และ Date


1
คือมีตัวอย่างของสิ่งที่เป็น“ข้อมูล BSON รวย” จะไม่รอดmongoexport/ mongoimportการเดินทางรอบ?
andrewdotn

1
เพิ่มการรองรับประเภทข้อมูลเช่นวันที่และไบนารีที่ไม่รองรับใน JSON เร็วกว่าในการเข้ารหัสและถอดรหัสbsonspec.org
Priyanshu Chauhan

5

นี่คือคำสั่งของฉันสำหรับการอ้างอิง:

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

ใน Windows 7 (MongoDB 3.4) ต้องย้าย cmd ไปยังตำแหน่งที่mongod.exeและmongo.exeไฟล์อยู่ => C:\MongoDB\Server\3.4\binมิฉะนั้นจะใช้งานไม่ได้โดยบอกว่าไม่มีmongoexportคำสั่งreongnize


ไม่มีใครรู้ว่าฟอร์แมตเตอร์ที่จะฟอร์แมต json ปกติเป็นรูปแบบ "single line no comma" โง่ ๆ ที่ MongoDB คาดหวังเมื่อนำเข้า?
conor909

3

จากเอกสาร Mongo:

ยูทิลิตี้ mongoexport รับคอลเล็กชันและส่งออกไปยัง JSON หรือ CSV คุณสามารถระบุตัวกรองสำหรับแบบสอบถามหรือรายการเขตข้อมูลที่จะส่งออก

อ่านเพิ่มเติมที่นี่: http://www.mongodb.org/display/DOCS/mongoexport


-2

หากคุณต้องการถ่ายโอนคอลเล็กชันทั้งหมดให้รันคำสั่งนี้:

mongodump -d {DB_NAME}   -o /tmp 

จะสร้างข้อมูลคอลเลกชันทั้งหมดในjsonและbsonส่วนขยายลงใน/tmp/{DB_NAME}ไดเร็กทอรี


ตามความเป็นจริงมันยังคงทิ้ง bson และ metadata.bson :-(
Prasad

9
คำตอบนี้ไม่ถูกต้อง mongodumpส่งออกข้อมูลในBSONรูปแบบ คำตอบอื่น ๆ เรียกได้อย่างถูกต้องว่าmongoexportเป็นเครื่องมือที่เหมาะสม
Christian Dechery

สิ่งนี้ใช้ได้ผลสำหรับฉันมันส่งออกคอลเลคชันทั้งหมดไปยังโฟลเดอร์ tmp พร้อมไฟล์ bson และ json ฉันใช้ mongodump -d {dbname} -o tmp
shyamzzp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.