コード例の問題は、find()
です。 データベースカーソル
を返します コレクション内のすべてのドキュメントではなく、コレクションに追加します。したがって、remove
すると home
からのすべてのドキュメント コレクションの場合、カーソルは空のコレクションも指します。
コレクションを同じサーバー内の別のコレクションにコピーするには、 MongoDBAggregation> 演算子
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() MongoDBv3.0以降は非推奨になりました。
別のMongoDBサーバーにコピーする場合は、を利用できます。 db.cloneCollection() 。 PyMongoでは、次のようなコマンドになります。
db.command("cloneCollection", **{'collection': "databaseName.source_collection", 'from': "another_host:another_port"})
全体的な目標によっては、MongoDBバックアップメソッド が見つかる場合があります。 使える。