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 CSV vào MongoDB.
Ví dụ
Giả sử chúng ta có tệp CSV sau được gọi là pets.csv
:
_id,name,type 1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Lệnh sau nhập tệp CSV vào MongoDB:
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv
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.
Tệp CSV không có tiêu đề cột
Trong ví dụ trước, chúng tôi đã sử dụng --headerline
để chỉ định rằng dòng đầu tiên sẽ được sử dụng cho các tên trường.
Nếu tệp CSV của bạn không chứa dòng tiêu đề, bạn sẽ cần sử dụng --fields
tham số hoặc --fieldFile
tham số để chỉ định tên trường.
Vì vậy, hãy tưởng tượng tệp CSV của chúng tôi không có dòng cột và thay vào đó trông như thế này:
1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Sau đó, chúng tôi có thể sử dụng lệnh sau để nhập tệp:
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv
Điều đó có cùng kết quả với ví dụ trước.
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 --type=csv --fields=_id,name,type --file=pets.csv
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 (sẽ nói thêm về điều này sau).
Trong trường hợp của chúng tôi, đây là giao diện của bộ sưu tập mới được tạo:
db.pets2.find()
Kết quả:
{ "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 1, "name" : "Wag", "type" : "Dog" }
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.csv
, với tài liệu sau:
_id,name,type,weight 4,"Bubbles","Fish",3
Đây là điều sẽ xảy ra nếu tôi nhập tài liệu đó vào pets2
bộ sưu tập sử dụng --drop
tùy chọn:
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv
Đầu ra:
2021-01-03T15:05:40.281+1000 connected to: mongodb://localhost/ 2021-01-03T15:05:40.284+1000 dropping: PetHotel.pets2 2021-01-03T15:05:40.336+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Điều này 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.pets2.find()
Kết quả:
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Đúng như mong đợi, tài liệu mới của chúng tôi là 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 ở đâu mongoimport
Lệnh?
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.