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.
Một trong những điều bạn có thể làm với tính năng này là xuất kết quả truy vấn. Bài viết này hướng dẫn bạn cách sử dụng mongoexport
để xuất kết quả truy vấn 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.
Ví dụ
Mã ví dụ sau xuất kết quả của một truy vấn sang tệp JSON:
mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
Thao tác này xuất một truy vấn truy vấn một bộ sưu tập có tên là pets
trong PetHotel
cơ sở dữ liệu. Truy vấn được xuất sang tệp có tên dogs.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
.
Bạn cũng có thể sử dụng --type
tham số để chỉ định rõ ràng JSON. Mặc định là JSON, vì vậy đây là tùy chọn khi xuất sang JSON.
Bạn cũng có thể bao gồm một --fields
tham số để chỉ định các trường cần xuất. Theo mặc định, nó xuất tất cả các trường khi sử dụng JSON. Tuy nhiên, khi xuất sang CSV, bạn phải chỉ định trường nào sẽ xuất.
Dưới đây là một ví dụ về ví dụ trên với hai tham số được thêm vào:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.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 để chạy mongoexport . 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 tập hợp chúng ta muốn xuất (hoặc chạy truy vấn). 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. Đã cho JSON là giá trị mặc định, tham số này là tùy chọn khi xuất sang 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 hoặc chỉ một số trường. Khi xuất sang JSON, việc chỉ định tên trường là tùy chọn (đây là yêu cầu khi xuất sang CSV). |
--query hoặc -q | Chỉ định truy vấn cho kết quả mà chúng tôi muốn xuất. Điều này phải được đặt trong dấu ngoặc kép (để nó không tương tác với trình bao của bạn). Tham số này cũng có thể được chuyển bằng cách sử dụng -q . |
--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 chạy truy vấn đối với bộ sưu tập ban đầu.
use PetHotel
db.pets.find({ "type": "Dog" })
Kết quả:
{ "_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 }
Vì vậy, chúng tôi có thể thấy rằng có 4 con chó, 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 dogs.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":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.
Xuất ít trường hơn
Bạn có thể chỉ định ít trường hơn với --fields
nếu bạn muốn.
Ví dụ:
mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json
Tệp kết quả:
{"_id":1.0,"name":"Wag","weight":20.0} {"_id":2.0,"name":"Bark","weight":10.0} {"_id":6.0,"name":"Fetch","weight":17.0} {"_id":7.0,"name":"Jake","weight":30.0}
Bạn sẽ nhận thấy rằng _id
trường đã được đưa vào tệp đã xuất, ngay cả khi tôi không đưa nó vào --fields
một cách rõ ràng lý lẽ. Đó là vì _id
trường luôn được bao gồm khi xuất sang JSON - ngay cả khi bạn không bao gồm nó một cách rõ ràng. Điều này không xảy ra khi xuất sang CSV.
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 --query='{ "type": "Dog" }' --out=data/dogs.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).