Tiện ích nhập của MongoDB - mongoimport
- đã giới thiệu một tham số mới cho phép bạn nhập dữ liệu CSV dưới dạng một mảng.
--useArrayIndexFields
tham số diễn giải các số tự nhiên trong các trường dưới dạng chỉ số mảng khi nhập tệp CSV hoặc TSV.
Ví dụ
Giả sử chúng ta có một tệp CSV được gọi là tags.csv
trông như thế này:
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
Chúng tôi có thể nhập dữ liệu đó bằng --useArrayIndexFields
tham số này sẽ gây ra mongoimport
để diễn giải các số trong tiêu đề cột dưới dạng chỉ số mảng.
Ví dụ:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv
Đầu ra:
2021-01-03T20:55:44.284+1000 no collection specified 2021-01-03T20:55:44.284+1000 using filename 'tags' as collection 2021-01-03T20:55:44.297+1000 connected to: mongodb://localhost/ 2021-01-03T20:55:44.330+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Do tôi không chỉ định tên bộ sưu tập, nên nó đã tạo một bộ sưu tập có tên là thẻ tags
(dựa trên tên của tệp), sau đó nhập tài liệu của tôi.
Hãy chuyển sang shell mongo và kiểm tra bộ sưu tập.
db.tags.find()
Kết quả:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Chúng ta có thể thấy rằng dữ liệu CSV đã được nhập dưới dạng một mảng JSON.
Đây là một lần nữa nhưng với định dạng đẹp hơn, có thể làm cho mảng dễ nhìn hơn.
db.tags.find().pretty()
Kết quả:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Kết hợp với Dữ liệu CSV khác
Tệp CSV trong ví dụ trước chỉ bao gồm dữ liệu mảng. Nhưng chúng tôi cũng có thể đưa các dữ liệu khác vào tệp.
Dưới đây là ví dụ về tệp CSV có tên articles.csv
chứa dữ liệu khác.
_id,title,body,tags.0,tags.1,tags.2,tags.3 1.0,Web,blah,html,css,sql,xml 2.0,Animals,blah 2,cats,dogs 3.0,Plants,blah 3,trees 4.0,Oceans,blah 4
Hãy nhập tệp đó:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv
Đầu ra:
2021-01-03T21:14:38.286+1000 no collection specified 2021-01-03T21:14:38.287+1000 using filename 'articles' as collection 2021-01-03T21:14:38.336+1000 connected to: mongodb://localhost/ 2021-01-03T21:14:38.407+1000 4 document(s) imported successfully. 0 document(s) failed to import.
Bây giờ chúng ta hãy chuyển sang shell mongo và kiểm tra bộ sưu tập.
db.articles.find()
Kết quả:
{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] } { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] } { "_id" : 4, "title" : "Oceans", "body" : "blah 4" } { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }
Hãy cải thiện một chút.
db.articles.find().pretty()
Kết quả:
{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] } { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] } { "_id" : 4, "title" : "Oceans", "body" : "blah 4" } { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }
Vì vậy, chúng ta có thể thấy rằng các tài liệu đã được tạo dưới dạng tài liệu JSON / BSON hoàn hảo và các mảng đã được tạo cho dữ liệu có liên quan.
Lưu ý rằng không có mảng nào được tạo cho tài liệu 4. Điều này là do không có dữ liệu mảng nào được cung cấp trong tệp CSV. Vì vậy, thay vì tạo một trường với một mảng trống, nó không tạo trường hoặc mảng.