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

Sao chép / sao chép bộ sưu tập trong MongoDB

Trong các phiên bản trước của MongoDB, bạn có thể sử dụng db.collection.copyTo() phương pháp để sao chép một bộ sưu tập.

MongoDB đã không dùng phương pháp đó nữa. Ngoài ra, bắt đầu từ phiên bản 4.2, MongoDB đã xóa eval yêu cầu. Đưa ra db.collection.copyTo() kết thúc eval , điều này có nghĩa là bạn không thể sử dụng một trong số chúng nếu bạn đang sử dụng MongoDB 4.2 trở lên.

May mắn thay, có một cách khác để sao chép bộ sưu tập MongoDB.

Kiểm tra Công cụ Cơ sở dữ liệu MongoDB

Trong MongoDB, bạn có thể sao chép một bộ sưu tập bằng cách sử dụng Công cụ cơ sở dữ liệu MongoDB. Cụ thể, bạn có thể sử dụng mongodumpmongorestore .

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ài đặt Công cụ cơ sở dữ liệu MongoDB hay chưa, hãy thử chạy các lệnh sau trong Terminal hoặc Command Prompt để kiểm tra:

mongodump --version
mongorestore --version

Điều đó đặc biệt kiểm tra mongodumpmongorestore các phiên bản.

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 Công cụ cơ sở dữ liệu MongoDB vào hệ thống của mình.

Sao chép một Bộ sưu tập vào cùng một cơ sở dữ liệu

Bạn cần chạy mongodumpmongorestore 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 nó từ mongo vỏ bọc.

Dưới đây là một ví dụ về mã sao chép một bộ sưu tập vào cùng một cơ sở dữ liệu:

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'

Trong trường hợp này, chúng tôi sao lưu pets bộ sưu tập trong PetHotel cơ sở dữ liệu, sau đó khôi phục nó dưới dạng pets2 trong cùng một cơ sở dữ liệu.

Điều này sử dụng mongodump để tạo tệp sao lưu của bộ sưu tập, sau đó mongorestore để khôi phục bộ sưu tập đó dưới một tên khác. Chúng tôi đã thực hiện việc này bằng cách kết xuất bộ sưu tập xuống luồng đầu ra tiêu chuẩn và chuyển vào mongorestore .

Đây là chức năng của mỗi thông số:

Tham số Mô tả
--archive Ghi kết quả đầu ra vào một tệp lưu trữ được chỉ định hoặc, nếu tệp lưu trữ không được chỉ định, ghi vào đầu ra chuẩn (stdout ). Trong trường hợp của chúng tôi, tệp lưu trữ là không xác định, vì vậy nó được ghi vào đầu ra chuẩn.
--db Chỉ định cơ sở dữ liệu có chứa bộ sưu tập mà chúng tôi muốn sao chép. Trong trường hợp này, cơ sở dữ liệu được gọi là PetHotel .
--nsFrom Chỉ định bộ sưu tập trong tệp kết xuất. Đây là bộ sưu tập chúng tôi muốn sao chép.
--nsTo Chỉ định tên bộ sưu tập sẽ được sử dụng khi khôi phục. Trong trường hợp của chúng tôi, chúng tôi gọi nó là pets2 .

Sao chép Bộ sưu tập sang Cơ sở dữ liệu khác

Bạn có thể sử dụng kỹ thuật tương tự để sao chép bộ sưu tập sang cơ sở dữ liệu khác. Trong trường hợp này, bạn thậm chí không cần phải thay đổi tên của bộ sưu tập nếu bạn không muốn.

Đây là một ví dụ:

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'

Điều này rất giống với ví dụ trước, ngoại trừ --nsTo của chúng tôi đối số chỉ định PetHouse.pets như bộ sưu tập đích.

Điều này có nghĩa là bộ sưu tập nhân bản sẽ được gọi là pets và nó sẽ nằm trong PetHouse cơ sở dữ liệu (thay vì PetHotel ban đầu cơ sở dữ liệu).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để sử dụng $ elemMatch trên phép chiếu tổng hợp?

  2. 2 cách xóa cơ sở dữ liệu trong MongoDB

  3. Những ký tự nào KHÔNG được phép trong tên trường MongoDB?

  4. Làm thế nào để truy vấn tài liệu bằng cách sử dụng trường _id trong trình điều khiển mongodb Java?

  5. Làm thế nào để chuyển đổi một pymongo.cursor.Cursor thành một dict?