Masalah dengan contoh kode Anda adalah find()
mengembalikan kursor database
untuk koleksi, tidak semua dokumen dalam koleksi. Jadi ketika Anda remove
semua dokumen dari home
koleksi, kursor juga akan menunjuk ke koleksi kosong.
Untuk menyalin koleksi ke koleksi lain di server yang sama, Anda dapat menggunakan Agregasi MongoDB operator $match dan $out
pipeline = [ {"$match": {}},
{"$out": "destination_collection"},
]
db.source_collection.aggregate(pipeline)
Menggunakan kode contoh Anda, sekarang kamu bisa
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.
Catatan :db.collection.copyTo() telah ditinggalkan sejak MongoDB v3.0.
Jika Anda ingin menyalin ke server MongoDB lain, Anda dapat menggunakan db.cloneCollection() . Di PyMongo itu akan menjadi perintah seperti di bawah ini:
db.command("cloneCollection", **{'collection': "databaseName.source_collection", 'from': "another_host:another_port"})
Bergantung pada sasaran keseluruhan Anda, Anda mungkin menemukan metode Pencadangan MongoDB berguna.