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

Làm cách nào để sao chép một bộ sưu tập từ MongoDB bằng pymongo và dán vào một bộ sưu tập trống khác?

Vấn đề với ví dụ mã của bạn là find() trả về con trỏ cơ sở dữ liệu vào bộ sưu tập, không phải tất cả các tài liệu trong bộ sưu tập. Vì vậy, khi bạn remove tất cả các tài liệu từ home bộ sưu tập, con trỏ cũng sẽ trỏ đến một bộ sưu tập trống.

Để sao chép một bộ sưu tập sang một bộ sưu tập khác trong cùng một máy chủ, bạn có thể sử dụng Tổng hợp MongoDB toán tử $ match $ out

pipeline = [ {"$match": {}}, 
             {"$out": "destination_collection"},
]
db.source_collection.aggregate(pipeline)

Sử dụng mã mẫu của bạn, bây giờ bạn có thể làm

source = db["source_collection"]
destination = db["destination_collection"]

# Remove all documents, or make modifications. 
source.remove({}) 

# Restore documents from the source collection.  
for doc in destination: 
      source.insert(doc)
# or instead you can just use the same aggregation method above but reverse the collection name. 

Lưu ý : db.collection.copyTo () đã không được dùng nữa kể từ MongoDB v3.0.

Nếu bạn muốn sao chép sang một máy chủ MongoDB khác, bạn có thể sử dụng db.cloneCollection () . Trong PyMongo, nó sẽ là một lệnh như sau:

db.command("cloneCollection", **{'collection': "databaseName.source_collection", 'from': "another_host:another_port"})

Tùy thuộc vào mục tiêu tổng thể của mình, bạn có thể tìm thấy phương pháp MongoDB BackUp hữu ích.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - Lọc nội dung của Mảng nội bộ trong tập kết quả

  2. Cách truy vấn ngày mongodb bằng php

  3. Chỉ mục tìm kiếm toàn văn bản trong MongoDB:error:too many text index for, why?

  4. Apache Drill - Thời gian bắt đầu đầu tiên cao

  5. Không thể ghi đè mô hình sau khi đã biên dịch Mongoose