Khi sử dụng MongoDB, bạn có thể sử dụng mongoimport
để nhập tài liệu vào một bộ sưu tập. mongoimport
là một tiện ích dòng lệnh nhập nội dung từ tệp JSON mở rộng, CSV hoặc TSV. Tệp nhập có thể đã được tạo bởi mongoexport
hoặc một số tiện ích xuất khẩu khác.
Bài viết này trình bày các ví dụ về cách nhập tệp JSON vào MongoDB.
Ví dụ
Giả sử chúng ta có tệp JSON sau được gọi là pets.json
:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Lệnh sau nhập tệp JSON vào MongoDB:
mongoimport --db=PetHotel --file=pets.json
Trong trường hợp này, tôi không chỉ định một bộ sưu tập để nhập nó vào, vì vậy nó đã tạo một bộ sưu tập có cùng tên của tệp (pets
).
Kiểm tra kết quả
Hãy xem bộ sưu tập.
db.pets.find()
Kết quả:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Chúng tôi có thể thấy rằng các tài liệu đã được nhập như mong đợi.
Chỉ định Tên Bộ sưu tập
Bạn có thể sử dụng --collection
(hoặc -c
) tham số để chỉ định một tập hợp để nhập tệp vào.
Dưới đây là một ví dụ về việc sử dụng --collection
để nhập cùng một tệp vào một bộ sưu tập khác:
mongoimport --db=PetHotel --collection=pets2 --file=pets.json
Nếu bộ sưu tập chưa tồn tại, nó sẽ được tạo. Nếu nó đã tồn tại, thì kết quả nhập sẽ phụ thuộc vào chế độ bạn đang sử dụng (thêm thông tin về điều này bên dưới).
Bỏ bộ sưu tập trước khi nhập
Bạn có thể sử dụng --drop
để loại bỏ bất kỳ bộ sưu tập hiện có nào có cùng tên với bộ sưu tập bạn đang cố gắng tạo / nhập.
Hãy tưởng tượng chúng ta có một tệp thứ hai, được gọi là pets2.json
, với tài liệu sau:
{ "_id" : 4, "name" : "Bubbles" } { "_id" : 5, "name" : "Hop", "type": "Kangaroo" }
Đây là những gì sẽ xảy ra nếu tôi nhập tài liệu đó vào pets
bộ sưu tập sử dụng --drop
tùy chọn:
mongoimport --db=PetHotel --collection=pets --drop --file=pets2.json
Đầu ra:
2021-01-03T15:42:25.626+1000 connected to: mongodb://localhost/ 2021-01-03T15:42:25.640+1000 dropping: PetHotel.pets 2021-01-03T15:42:25.734+1000 2 document(s) imported successfully. 0 document(s) failed to import.
Thông báo cho chúng tôi biết rằng bộ sưu tập đã bị xóa và một tài liệu đã được nhập.
Hãy xem bộ sưu tập:
db.pets.find()
Kết quả:
{ "_id" : 5, "name" : "Hop", "type" : "Kangaroo" } { "_id" : 4, "name" : "Bubbles" }
Như dự kiến, hai tài liệu mới của chúng tôi là những tài liệu duy nhất trong bộ sưu tập.
Chế độ nhập
Có nhiều chế độ nhập khác nhau mà bạn có thể sử dụng với mongoimport
. Các chế độ này xác định điều gì sẽ xảy ra nếu đã có tài liệu khớp trong bộ sưu tập mà bạn đang cố gắng nhập vào.
Các chế độ như sau:
Chế độ | Mô tả |
---|---|
insert | Đây là chế độ mặc định. Chế độ này sẽ chèn các tài liệu từ tệp nhập. Nếu một tài liệu phù hợp đã tồn tại trong bộ sưu tập, thì sẽ xảy ra lỗi. Tài liệu phù hợp là tài liệu có cùng một ID duy nhất (chẳng hạn như _id phù hợp trường) dưới dạng tài liệu trong tệp nhập. |
upsert | Thay thế các tài liệu hiện có trong cơ sở dữ liệu bằng các tài liệu phù hợp từ tệp nhập. Tất cả các tài liệu khác đã được chèn. |
merge | Hợp nhất tài liệu hiện có khớp với tài liệu trong tệp nhập với tài liệu mới. Tất cả các tài liệu khác đã được chèn. |
delete | Xóa tài liệu hiện có trong cơ sở dữ liệu khớp với tài liệu trong tệp nhập. Mọi tài liệu không khớp đều không có hiệu lực. |
Xem Chế độ nhập của mongoimport
để biết ví dụ về từng chế độ.
Kiểm tra mongoimport
mongoimport
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 / mongoimport
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:
mongoimport --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 mongoimport
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.