Dump Mongo Collection sang định dạng JSON


119

Có cách nào để kết xuất bộ sưu tập mongo sang định dạng json không? Trên shell hoặc sử dụng trình điều khiển java. Tôi đang tìm kiếm một trình điều khiển có hiệu suất tốt nhất.


mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminBạn có thể xác định host, port, username, passwordnhư thế này và cơ sở dữ liệu xác thực mặc định là admin.
Max Peng

Câu trả lời:


177

Mongo bao gồm một tiện ích mongoexport (xem tài liệu) có thể kết xuất một bộ sưu tập. Tiện ích này sử dụng libmongoclient và có thể là phương pháp nhanh nhất.

mongoexport -d <database> -c <collection_name>

Cũng hữu ích:

-o: ghi đầu ra vào tệp, nếu không thì đầu ra chuẩn được sử dụng ( docs )

--jsonArray: tạo một tài liệu json hợp lệ, thay vì một đối tượng json trên mỗi dòng ( docs )

--pretty: đầu ra có định dạng json ( docs )


8
Sử dụng cờ -d để chỉ định cơ sở dữ liệu nào sẽ sử dụng.
Reimund

8
Nếu bạn muốn khá in JSON (ví dụ như kiểm tra một bộ sưu tập quá trình phát triển) sử dụng --prettycờ:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa

6
Nếu Mongo nằm trên một máy chủ khác nhau, sau đây là một ví dụ từ doc Mongo mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
gì sẽ được mát mẻ

Có vẻ như --prettynó đã biến mất kể từ phiên bản 2.6.10.
icedwater

115

Sử dụng mongoexport / mongoimport để kết xuất / khôi phục một bộ sưu tập:

Xuất tệp JSON :

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

Nhập tệp JSON :

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

CẢNH BÁO mongoimportmongoexportkhông bảo toàn đáng tin cậy tất cả các kiểu dữ liệu BSON phong phú bởi vì JSON chỉ có thể đại diện cho một tập hợp con của các kiểu được BSON hỗ trợ. Do đó, dữ liệu được xuất hoặc nhập bằng các công cụ này có thể mất một số thước đo về độ trung thực.

Ngoài ra, http://bsonspec.org/

BSON được thiết kế để mã hóa và giải mã nhanh. Ví dụ: số nguyên được lưu trữ dưới dạng số nguyên 32 (hoặc 64) bit, vì vậy chúng không cần phải được phân tích cú pháp đến và đi từ văn bản. Điều này sử dụng nhiều không gian hơn JSON cho các số nguyên nhỏ, nhưng nhanh hơn nhiều để phân tích cú pháp.

Ngoài tính nhỏ gọn, BSON còn bổ sung các kiểu dữ liệu bổ sung không có trong JSON, đặc biệt là kiểu dữ liệu BinData và Date.


1
Có ví dụ nào về “dữ liệu BSON phong phú” sẽ không tồn tại trong một mongoexport/ mongoimportchuyến khứ hồi không?
andrewdotn

1
Nó bổ sung hỗ trợ cho các loại dữ liệu như Ngày và nhị phân không được hỗ trợ trong JSON. Ngoài ra, nhanh hơn để mã hóa và giải mã bsonspec.org
Priyanshu Chauhan

5

Đây là lệnh của tôi để tham khảo:

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

Trên Windows 7 (MongoDB 3.4), người ta phải di chuyển cmd đến nơi chứa mongod.exemongo.exetập tin => C:\MongoDB\Server\3.4\binnếu không nó sẽ không hoạt động nói rằng nó không recongnize mongoexportlệnh.


Có ai biết về một định dạng sẽ định dạng json bình thường thành định dạng "một dòng không dấu phẩy" ngớ ngẩn mà MongoDB mong đợi khi nhập không?
conor909


-2

Nếu bạn muốn kết xuất tất cả các bộ sưu tập, hãy chạy lệnh này:

mongodump -d {DB_NAME}   -o /tmp 

Nó sẽ tạo ra tất cả dữ liệu bộ sưu tập trong jsonbsonphần mở rộng vào /tmp/{DB_NAME}thư mục


Như một vấn đề của thực tế, nó vẫn được bán phá giá bson và metadata.bson :-(
Prasad

9
Câu trả lời này không chính xác. mongodumpxuất dữ liệu ở BSONđịnh dạng. Các câu trả lời khác được gọi đúng mongoexportlà công cụ phù hợp.
Christian Dechery

Điều này đang hoạt động đối với tôi, nó đưa tất cả bộ sưu tập vào một thư mục tmp với các tệp bson và json. Tôi đã sử dụng mongodump -d {dbname} -o tmp
shyamzzp 10/09/19
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.