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 và $ 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.