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

Nhập dữ liệu CSV dưới dạng một mảng trong MongoDB bằng cách sử dụng mongoimport

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để tạo lược đồ mongoose động?

  2. Làm cách nào để truy vấn các đối tượng được tham chiếu trong MongoDB?

  3. Truy vấn một tài liệu và tất cả các tài liệu con của nó phù hợp với một điều kiện trong mongodb (sử dụng spring)

  4. MongoDB $ toObjectId

  5. tar gzip mongo dump như MySQL