问题: 由于因为版本不同, 表名都为UUID, 且表很多
- 使用
mongodump
备份的数据再使用mongorestore
恢复时会报错
- 使用
mongoexport
与mongoimport
命令只能每次指定一张表, 无法直接导出数据库
环境:
10.131.70.49
OS: Win10
MongoDB version: 4.2.5
192.168.11.26
OS: Ubuntu16.04
MongoDB version: 2.6.10
解决:
from pymongo import MongoClient
FROM_ADDRESS = ("10.131.70.49", 27017) # TODO 源mongo地址, 自行更改
TO_ADDRESS = ("192.168.11.26", 27017) # TODO 目的mongo地址, 自行更改
DB_NAME = "mission" # TODO 需要备份的数据库, 自行更改
def write(_id, data):
to_conn = MongoClient(*TO_ADDRESS)
to_db = to_conn[DB_NAME]
tab = to_db[_id]
tab.insert(data)
to_conn.close()
def main():
from_conn = MongoClient(*FROM_ADDRESS)
from_db = from_conn[DB_NAME]
tables_list = from_db.list_collection_names() # 数据库里面所有的表
"""
这里可以去掉不需要动的一些表
"""
tables_list.pop(tables_list.index("system.indexes")) # 去掉了system.indexes这张表
for table in tables_list:
db_data = from_db[table].find()
# _db[table].drop() # 若源数据库的数据不再需要就解开注释
"""
这里可对数据进行操作, 批量修改, 排序等
"""
write(table, db_data) # 写入数据库
from_conn.close()
if __name__ == '__main__':
main()
网友评论