MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Xuất Bộ sưu tập MongoDB sang Tệp JSON

Công cụ cơ sở dữ liệu MongoDB bao gồm một tiện ích có tên là mongoexport cho phép bạn xuất dữ liệu MongoDB sang tệp CSV hoặc JSON.

Bài viết này hướng dẫn bạn cách sử dụng mongoexport để xuất bộ sưu tập MongoDB sang tệp JSON.

Cú pháp

Cú pháp cho mongoexport như sau:

mongoexport --collection=<coll> <options> <connection-string>

Bạn cần chạy mongoexport lệnh từ dòng lệnh của hệ thống của bạn (ví dụ:cửa sổ Terminal hoặc Command Prompt mới).

Không chạy mongoexport các lệnh từ mongo vỏ bọc.

Xuất Bộ sưu tập

Mã ví dụ sau xuất một bộ sưu tập từ MongoDB sang tệp JSON:

mongoexport --db=PetHotel --collection=pets --out=data/pets.json

Thao tác này xuất một bộ sưu tập có tên là pets từ PetHotel cơ sở dữ liệu vào một tệp có tên pets.json trong data/ thư mục.

Nếu thư mục không tồn tại, nó sẽ được tạo. Tương tự với tệp. Nhân tiện, điều này giả định rằng không có vấn đề về quyền nào với việc ghi tệp vào vị trí được chỉ định.

Trong ví dụ này, tôi không chỉ định bất kỳ máy chủ, cổng, xác thực nào, v.v., vì vậy nó xuất bộ sưu tập từ phiên bản MongoDB chạy trên số cổng máy chủ cục bộ mặc định 27017 .

Ví dụ trên cũng có thể được viết như thế này:

mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --out=data/pets.json

Trong trường hợp này, chúng tôi đã thêm --type tham số và một --fields để chỉ định trường nào sẽ bao gồm trong tệp JSON.

Dưới đây là giải thích về các thông số chúng tôi cung cấp tại đây.

Tham số Mô tả
--db
hoặc
-d
Chỉ định cơ sở dữ liệu có chứa bộ sưu tập mà chúng tôi muốn xuất. Trong trường hợp này, cơ sở dữ liệu được gọi là PetHotel .
Tham số này có thể được chuyển theo cách khác bằng cách sử dụng -d (thay vì --db ).
--collection
hoặc
-c
Chỉ định bộ sưu tập mà chúng tôi muốn xuất. Trong trường hợp này, bộ sưu tập được gọi là pets .
Tham số này có thể được chuyển theo cách khác là -c (thay vì --collection ).
--type Chỉ định loại tệp được xuất. Trong trường hợp này, chúng tôi chỉ định json để xuất nó sang tệp JSON. json là giá trị mặc định, vì vậy nếu chúng tôi không chỉ định tham số này, tệp sẽ được xuất dưới dạng tệp JSON.
--fields Chỉ định các trường mà chúng ta muốn xuất. Chúng tôi có tùy chọn xuất tất cả các trường trong bộ sưu tập hoặc chỉ một số trường. Phân tách nhiều tên trường bằng dấu phẩy. Khi xuất sang JSON, việc chỉ định tên trường là tùy chọn (không giống như CSV).
--out Chỉ định tên tệp đã xuất và vị trí của tệp. Nếu bạn không chỉ định tên tệp, hãy mongoexport ghi dữ liệu vào đầu ra chuẩn (stdout ).

Kiểm tra tệp đã xuất

Hãy xác minh rằng hoạt động xuất hoạt động như mong đợi.

Trước tiên, hãy kiểm tra bộ sưu tập gốc.

use PetHotel
db.pets.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Vì vậy, chúng tôi có thể thấy rằng có 7 vật nuôi, tất cả đều có cùng các trường mà chúng tôi đã chỉ định trong hoạt động xuất của mình.

Bây giờ, hãy mở tệp đã xuất pets.json để xem những gì bên trong:

{"_id":1.0,"name":"Wag","type":"Dog","weight":20.0}
{"_id":2.0,"name":"Bark","type":"Dog","weight":10.0}
{"_id":3.0,"name":"Meow","type":"Cat","weight":7.0}
{"_id":4.0,"name":"Scratch","type":"Cat","weight":8.0}
{"_id":5.0,"name":"Bruce","type":"Bat","weight":3.0}
{"_id":6.0,"name":"Fetch","type":"Dog","weight":17.0}
{"_id":7.0,"name":"Jake","type":"Dog","weight":30.0}

Tất cả dữ liệu nằm trong tệp được xuất như mong đợi.

Ít trường hơn

Bạn có thể sử dụng --fields để chỉ định trường bạn muốn xuất.

Khi bạn thực hiện việc này trên các tệp JSON, _id trường luôn được xuất (ngay cả khi bạn không đưa nó vào danh sách các trường để xuất).

Ví dụ:

mongoexport --db=PetHotel --collection=pets --fields=name,type --out=data/pets.json

Trong trường hợp này, tôi chỉ định hai trường để xuất.

Khi tôi mở tệp đã xuất, tôi có thể thấy rằng cả hai trường đó đều được xuất, cộng với _id lĩnh vực:

{"_id":1.0,"name":"Wag","type":"Dog"}
{"_id":2.0,"name":"Bark","type":"Dog"}
{"_id":3.0,"name":"Meow","type":"Cat"}
{"_id":4.0,"name":"Scratch","type":"Cat"}
{"_id":5.0,"name":"Bruce","type":"Bat"}
{"_id":6.0,"name":"Fetch","type":"Dog"}
{"_id":7.0,"name":"Jake","type":"Dog"}

Kiểm soát truy cập / Xác thực

Nếu không sử dụng localhost, bạn có thể sử dụng --host tham số để chỉ định máy chủ và --port để chỉ định cổng. Bạn cũng có thể sử dụng --username tham số để chỉ định tên người dùng và --password cho mật khẩu. Nếu bạn bỏ qua tham số mật khẩu, bạn sẽ được nhắc nhập tham số đó. Ngoài ra còn có một --authenticationDatabase tham số để chỉ định cơ sở dữ liệu xác thực nơi người dùng đã được tạo.

Ví dụ:

mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --out=data/pets.json

Kiểm tra mongoexport

mongoexport là một phần của gói Công cụ cơ sở dữ liệu MongoDB. Công cụ cơ sở dữ liệu MongoDB là một bộ tiện ích dòng lệnh để làm việc với MongoDB.

Nếu bạn không chắc mình có Công cụ cơ sở dữ liệu MongoDB / mongoexport hay không đã cài đặt, hãy thử chạy lệnh sau trong Terminal hoặc Command Prompt của bạn để kiểm tra:

mongoexport --version

Nếu có, bạn sẽ thấy thông tin phiên bản, v.v. Nếu chưa có, bạn có thể sử dụng hướng dẫn cài đặt trên trang web MongoDB để cài đặt vào hệ thống của mình.

Chạy lệnh ở đâu?

Đừng quên, bạn cần chạy mongoexport lệnh từ dòng lệnh của hệ thống của bạn (ví dụ:cửa sổ Terminal hoặc Command Prompt mới).

Đừng chạy chúng từ mongo vỏ bọc.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tổng hợp Mongo với dữ liệu được phân trang và tổng số

  2. MongoDB - Tạo Bộ sưu tập

  3. Nhận bản ghi MongoDB mới nhất theo trường ngày giờ

  4. Giám sát &Quản lý hoạt động của MongoDB 4.0 với ClusterControl

  5. Tài liệu được nhúng không có Mảng?