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

Cách hợp nhất tài liệu khi nhập tệp vào MongoDB

Khi bạn sử dụng mongoimport để nhập tệp vào MongoDB, bạn có tùy chọn hợp nhất tài liệu hiện có với tài liệu bạn đang nhập.

Trong trường hợp này, nếu một tài liệu đã nhập có cùng _id giá trị như một tài liệu hiện có trong bộ sưu tập mà bạn đang nhập vào, tài liệu hiện có sẽ được hợp nhất với tài liệu đang được nhập.

Bạn cũng có thể chỉ định một trường khác (ngoài _id trường) là trường phù hợp nếu được yêu cầu.

Khi bạn hợp nhất tài liệu, tài liệu kết quả sẽ kết hợp dữ liệu hiện có với bất kỳ dữ liệu mới nào có trong tệp đã nhập. Mọi dữ liệu giống nhau sẽ được giữ nguyên. Mọi dữ liệu xung đột sẽ dẫn đến việc dữ liệu của tệp đã nhập sẽ ghi đè lên dữ liệu hiện có. Nếu tài liệu đã nhập không chứa trường có trong tài liệu tương ứng trong bộ sưu tập MongoDB, thì trường đó sẽ không thay đổi trong bộ sưu tập (tức là nó sẽ không bị xóa hoặc thay đổi).

Cách hợp nhất tài liệu với mongoimport là sử dụng merge chế độ.

Ví dụ

Giả sử chúng ta có một bộ sưu tập có tên là pets chứa các tài liệu sau:

db.pets.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Và chúng tôi có tệp JSON sau được gọi là pets.json :

{"_id":2.0,"name":"Fetch","type":"Dog","weight":40.0}
{"_id":3.0,"weight":10.0}
{"_id":4.0,"name":"Hop","type":"Kangaroo","weight":60.0}

Lệnh sau nhập tệp JSON vào bộ sưu tập:

mongoimport --db=PetHotel --collection=pets --mode=merge --file=data/pets.json

Điều này sử dụng merge chế độ hợp nhất tài liệu phù hợp với tài liệu đã nhập.

Kiểm tra kết quả

Bây giờ chúng ta hãy xem bộ sưu tập.

db.pets.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 40 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 10 }
{ "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 }

Chúng ta có thể thấy rằng tài liệu 1 không thay đổi, tài liệu 2 đã đổi trường tên thành Fetch và nó cũng có weight trường được thêm vào .. Tài liệu 3 cũng đã được thêm trường trọng số và tài liệu 4 đã được chèn.

Thay đổi / s Trường nâng cấp

Bạn có thể sử dụng --upsertFields tham số để chỉ định một trường không phải là _id để so khớp với. Khi sử dụng tham số này, hãy chuyển các trường dưới dạng danh sách được phân tách bằng dấu phẩy.

Giả sử chúng ta có một tệp JSON khác được gọi là pets2.json mà chúng tôi muốn nhập và nó trông giống như sau:

{"name":"Wag","type":"Dog","weight":20.0,"gooddog":true}
{"name":"Bubbles","type":"Fish"}

Tài liệu này không bao gồm _id , vì vậy chúng tôi sẽ cần đối sánh với các trường khác nhận dạng duy nhất từng tài liệu. Trong trường hợp này, chúng tôi có thể sử dụng nametype lĩnh vực.

Do đó, chúng tôi có thể sử dụng mongoimport sau lệnh:

mongoimport --db=PetHotel --collection=pets --mode=merge --upsertFields=name,type --file=data/pets2.json

Bây giờ chúng ta hãy kiểm tra lại bộ sưu tập:

db.pets.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "gooddog" : true, "weight" : 20 }
{ "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 40 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 10 }
{ "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 }
{ "_id" : ObjectId("5ff0548dd991410169412300"), "name" : "Bubbles", "type" : "Fish" }

Chúng ta có thể thấy rằng Wag đã được cập nhật (nhưng _id giá trị không đổi).

Mặt khác, bong bóng không phù hợp với các trường nâng cấp và do đó đã được chèn vào.

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 10 nền tảng lưu trữ MongoDB tốt nhất

  2. Làm cách nào để tải dữ liệu từ bộ sưu tập mongodb vào DataFrame của gấu trúc?

  3. Các trường cập nhật theo chương trình trong Mongo và Meteor

  4. MongoDB:Làm thế nào để tìm hiểu xem một trường mảng có chứa một phần tử không?

  5. MongoDB Security - Tài nguyên để giữ an toàn cho các DB NoSQL