在Python中如何将mongodb库中的fs.file中的内容迁移到另一mongodb中去问题

import pymongo
import gridfs
import bson

sourceDBConnection = pymongo.Connection(host='192.168.1.102',port=27017,slave_okay=True)['kingdeeMongo']
destinationDBConnection = pymongo.Connection(host="localhost",port=27017,slave_okay=True)['test']

sourceFS = gridfs.GridFS(sourceDBConnection)
destinationFS = gridfs.GridFS(destinationDBConnection)

#情况一:把fs.files中的所有信息都保存过去,fs.files中文档的字典信息不变,同时自动添加到fs.chunks
recordone = sourceDBConnection["fs.files"].find_one({{"_id": bson.objectId.ObjectId('53eada8e5a1e0a1dbc7fbcd1')}})
sourceFile = sourceFS.get(recordone['_id'])
destinationFS.put(sourceFile.read(),**recordone)

#情况二:只是把fs.files中的所标志的对象信息(如:图片或视频)保存过去,其他的对该对象的说明信息(_id)重新由系统定义
recordtwo = sourceDBConnection["fs.files"].find_one()
sourceFiletwo = sourceFS.get(recordtwo['_id'])
destinationFS.put(sourceFiletwo.read())


注意1:fs.files中的文档_id是类型ObjectId,如果直接用如{'_id' = 'jakfjjalfsdhg'},是无法索引到的。只有将引入bson模块,同时将类型转化为 bson.objectId.ObjectId(上面代码中有)或:bson.ObjectId (两种情况试试可能在不同平台有所差别)方可索引成功


注意2:清楚情况一和情况二的区别,不管是在语法还是在逻辑存储上。


注意3:情况一中要考虑如果_id已经存在,同时是标示不同的对象的话,如何不影响后台开发的情况下达到添加对象成功呢

你可能感兴趣的:(Python)