आपके कोड उदाहरण के साथ समस्या यह है कि find()
एक डेटाबेस कर्सर
लौटाता है संग्रह के लिए, संग्रह के सभी दस्तावेज़ नहीं। इसलिए जब आप remove
home
. से सभी दस्तावेज़ संग्रह, कर्सर एक खाली संग्रह को भी इंगित करेगा।
उसी सर्वर में किसी संग्रह को दूसरे संग्रह में कॉपी करने के लिए, आप MongoDB एकत्रीकरण ऑपरेटर $match और $out
pipeline = [ {"$match": {}},
{"$out": "destination_collection"},
]
db.source_collection.aggregate(pipeline)
अपने उदाहरण कोड का उपयोग करते हुए, अभी आप कर सकते हैं
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.
नोट :db.collection.copyTo() MongoDB v3.0 के बाद से पदावनत कर दिया गया है।
यदि आप किसी अन्य MongoDB सर्वर पर कॉपी करना चाहते हैं, तो आप का उपयोग कर सकते हैं। db.cloneCollection() . PyMongo में यह एक कमांड होगा जैसे नीचे:
db.command("cloneCollection", **{'collection': "databaseName.source_collection", 'from': "another_host:another_port"})
आपके समग्र लक्ष्य के आधार पर, आपको MongoDB बैकअप विधियां मिल सकती हैं। उपयोगी।