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

MongoDB - Nhập dữ liệu

Sử dụng mongoimport tiện ích để nhập dữ liệu vào cơ sở dữ liệu MongoDB.

MongoDB cung cấp mongoimport tiện ích có thể được sử dụng để nhập tệp JSON, CSV hoặc TSV vào cơ sở dữ liệu MongoDB.

mongoimport nằm trong thư mục bin (ví dụ: / mongodb / bin hoặc bất cứ nơi nào bạn đã cài đặt nó).

Để nhập dữ liệu, hãy mở cửa sổ Terminal / Command Prompt mới và nhập mongoimport theo sau là các tham số như tên cơ sở dữ liệu, tên bộ sưu tập, tên tệp nguồn, v.v.

Nếu bạn thấy rằng bạn không thể chạy mongoimport , hãy chắc chắn rằng bạn đã thoát khỏi mongo hoặc mở một cửa sổ Terminal / Command Prompt mới trước khi chạy mongoexport , vì nó là một tiện ích riêng biệt.

Nhập tệp JSON

Đây là một ví dụ về việc chạy mongoimport để nhập tệp JSON.

Bạn có thể nhớ rằng trước đây chúng tôi đã sử dụng mongoexport để xuất nghệ sĩ bộ sưu tập vào một tệp JSON.

Sau đó, chúng tôi đã loại bỏ nghệ sĩ bộ sưu tập hoàn toàn.

Bây giờ, chúng tôi sẽ nhập lại bộ sưu tập đó vào cơ sở dữ liệu của mình.

mongoimport --db music --file /data/dump/music/artists.json

Thông báo kết quả:

2016-07-12T13:34:04.904+0700	no collection specified
2016-07-12T13:34:04.905+0700	using filename 'artists' as collection
2016-07-12T13:34:04.911+0700	connected to: localhost
2016-07-12T13:34:04.968+0700	imported 13 documents

Nếu bạn không chỉ định tên bộ sưu tập, bộ sưu tập sẽ được tạo dựa trên tên của tệp (trừ phần mở rộng).

Bây giờ, hãy quay lại mongo của chúng tôi Cửa sổ Terminal / Command Prompt và truy xuất danh sách các bộ sưu tập trong cơ sở dữ liệu của chúng tôi:

show collections

Kết quả:

artists
musicians
producers

Bây giờ, chúng tôi sẽ truy vấn bộ sưu tập đã phục hồi của chúng tôi.

db.artists.find()

Kết quả:

{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : ObjectId("5781f85d48ef8c6b3ffb0150"), "artistname" : "Deep Purple", "albums" : [ { "album" : "Machine Head", "year" : 1972, "genre" : "Rock" }, { "album" : "Stormbringer", "year" : 1974, "genre" : "Rock" } ] }
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
{ "_id" : ObjectId("578217c248ef8c6b3ffb015a"), "artistname" : "Robben Ford", "albums" : [ { "album" : "Bringing it Back Home", "year" : 2013, "genre" : "Blues" }, { "album" : "Talk to Your Daughter", "year" : 1988, "genre" : "Blues" } ] }
{ "_id" : 2, "artistname" : "Prince", "address" : { "street" : "Audubon Road", "city" : "Chanhassen", "state" : "Minnesota", "country" : "United States" } }
{ "_id" : 4, "artistname" : "Rush" }
{ "_id" : 3, "artistname" : "Moby", "albums" : [ { "album" : "Play", "year" : 1999, "genre" : "Electronica" }, { "album" : "Long Ambients 1: Calm. Sleep.", "year" : 2016, "genre" : "Ambient" } ] }
{ "_id" : ObjectId("578217c248ef8c6b3ffb015b"), "artistname" : "Snoop Dogg", "albums" : [ { "album" : "Tha Doggfather", "year" : 1996, "genre" : "Rap" }, { "album" : "Reincarnated", "year" : 2013, "genre" : "Reggae" } ] }

Chỉ định Tên Bộ sưu tập

Bạn có thể sử dụng --collection để cung cấp tên của tập hợp mà dữ liệu sẽ đi vào.

Hãy nhập một tệp khác, nhưng lần này, chỉ định tên bộ sưu tập:

mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json

Thông báo kết quả:

2016-07-12T14:09:01.793+0700	connected to: localhost
2016-07-12T14:09:01.849+0700	imported 1 document

Bây giờ chuyển về mongo và kiểm tra danh sách các bộ sưu tập:

show collections

Thông báo kết quả:

artists
jazz
musicians
producers

Và cuối cùng, truy vấn jazz bộ sưu tập:

db.jazz.find().pretty()

Thông báo kết quả:

{
	"_id" : ObjectId("578214f048ef8c6b3ffb0159"),
	"artistname" : "Miles Davis",
	"albums" : [
		{
			"album" : "Kind of Blue",
			"year" : 1959,
			"genre" : "Jazz"
		},
		{
			"album" : "Bitches Brew",
			"year" : 1970,
			"genre" : "Jazz"
		}
	]
}

Nhập tệp CSV

Bạn có thể nhập tệp CSV bằng cách sử dụng --type csv .

Nếu tệp CSV có hàng tiêu đề, hãy sử dụng --headerline nói với mongoimport sử dụng dòng đầu tiên để xác định tên của các trường trong tài liệu kết quả.

Nếu tệp CSV không có hàng tiêu đề, hãy sử dụng --fields tham số để đặt tên trường.

Với hàng tiêu đề

Đây là một ví dụ về cách nhập tài liệu có hàng tiêu đề.

Nội dung của tệp CSV:

_id,albumname,artistname
1,Killers,"Iron Maiden"
2,Powerslave,"Iron Maiden"
12,"Somewhere in Time","Iron Maiden"
3,"Surfing with the Alien","Joe Satriani"
10,"Flying in a Blue Dream","Joe Satriani"
11,"Black Swans and Wormhole Wizards","Joe Satriani"
6,"Out of the Loop","Mr Percival"
7,"Suck on This",Primus
8,"Pork Soda",Primus
9,"Sailing the Seas of Cheese",Primus

Nhập tệp:

mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv

Truy vấn bộ sưu tập:

> db.catalog.find()
{ "_id" : 2, "albumname" : "Powerslave", "artistname" : "Iron Maiden" }
{ "_id" : 1, "albumname" : "Killers", "artistname" : "Iron Maiden" }
{ "_id" : 3, "albumname" : "Surfing with the Alien", "artistname" : "Joe Satriani" }
{ "_id" : 12, "albumname" : "Somewhere in Time", "artistname" : "Iron Maiden" }
{ "_id" : 10, "albumname" : "Flying in a Blue Dream", "artistname" : "Joe Satriani" }
{ "_id" : 6, "albumname" : "Out of the Loop", "artistname" : "Mr Percival" }
{ "_id" : 7, "albumname" : "Suck on This", "artistname" : "Primus" }
{ "_id" : 8, "albumname" : "Pork Soda", "artistname" : "Primus" }
{ "_id" : 11, "albumname" : "Black Swans and Wormhole Wizards", "artistname" : "Joe Satriani" }
{ "_id" : 9, "albumname" : "Sailing the Seas of Cheese", "artistname" : "Primus" }

Không có hàng tiêu đề

Đây là một tệp CSV khác, nhưng tệp này không có hàng tiêu đề:

Mutt Lange, 1948
John Petrucci, 1967
DJ Shadow, 1972
George Clinton, 1941

Bây giờ chúng tôi sẽ nhập nó và chỉ định tên trường để sử dụng:

mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv

Truy vấn bộ sưu tập:

> db.producers.find()
{ "_id" : 1, "name" : "Bob Rock" }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b72"), "name" : "John Petrucci", "born" : 1967 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b73"), "name" : "Mutt Lange", "born" : 1948 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b74"), "name" : "George Clinton", "born" : 1941 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b75"), "name" : "DJ Shadow", "born" : 1972 }

Bạn sẽ thấy rằng ObjectId trường đã được tự động tạo và điền cho chúng tôi.

Ngoài ra, chúng tôi đã có một tài liệu trong bộ sưu tập này trước khi chạy quá trình nhập: {"_id":1, "name":"Bob Rock"} . Do đó, bạn có thể thấy rằng quá trình nhập chỉ được thêm vào vào bộ sưu tập (thay vì thay thế nó và tất cả nội dung của nó).

Bạn có thể sử dụng cùng một phương pháp để nhập tệp TSV. Chỉ cần sử dụng --type tsv .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tốt nhất để kết nối với MongoDB bằng Node.js

  2. Mongodb dữ liệu mùa xuân - Tùy chọn 'con trỏ' là bắt buộc

  3. Mongo đẩy đến mảng bên trong mảng

  4. Tải lên tệp Node.js (Express 4, MongoDB, GridFS, GridFS-Stream)

  5. mongodb cách thay đổi cổng mặc định