我曾经使用pymongo.bulk.BulkOperationBuilder
,但文档说它已被弃用。
官方MongoDB有db.cloneCollection()
但PyMongo除了copydb
之外我找不到类似的内容,但这不是我需要的。
所以我找到了两种方法在colls之间批量插入文档并在之后删除它们。我还没有测试过它们,我想先问你一个建议,因为可能有更好的方法。
解决方案#1。
coll_from = mongo['db_1']['coll_name']
coll_to = mongo['db_2']['coll_name']
requests = (InsertOne(doc) for doc in coll_from.find())
result = coll_to.bulk_write(requests, ordered=False)
db_from.drop_collection('coll_name')
解决方案#2。
coll_from = mongo['db_1']['coll_name']
coll_to = mongo['db_2']['coll_name']
coll_to.insert_many(coll_from.find())
db_from.drop_collection('coll_name')
有没有更好的方法在dbs之间批量移动文档?
答案 0 :(得分:0)
cloneCollection
因为documented是一个命令。
Pymongo API在command
的实例上公开了pymongo.database.Database
方法。
这可以通过以下方式应用于从远程集合中克隆类似命名的集合。
client = MongoClient()
clone_cmd = {
'cloneCollection': 'db_1.coll_name',
'from': '<hostname>'
}
client.db_2.command(clone_cmd)