23.37K 浏览2015/05/12驱动程序 0 dragonflylxp0 2015/05/13 0条评论 如题,请问如下操作是否会导致未定义行为。如何处理这种情况(我用的驱动是pymongo) for doc in col.find(): col.update_one({“_id”:doc[“_id”]},{“$set”:{“k”:”v”}}) 3 答案 活跃已投票最新最老的 0 dragonflylxp0 发布 2015/05/13 0 条评论 你好,多谢你的回答。我描述的和我想问的有些出入。我的问题其实是这样的: for doc in col.find(): process(doc) #对该文档做某种修改(对各个文档的修改可能会不同,所以需要遍历) col.save(doc) #保存改文档 因为考虑到mongodb的存储特性,文档修改之后可能由于体积增大而后移,这样在cursor遍历到后面时可能会再次访问这个文档第二遍甚至更多遍。 如何处理这种问题。 0 eshujiushiwo16 发布 2015/05/13 0 条评论 如果希望持续trace该collection,并对后续的数据持续做修改。 golang的mgo中可以使用Iter()来做,pymongo中应该也有对应的类。 0 eshujiushiwo16 发布 2015/05/13 0 条评论 HI 你好 没有问题的。 不过看你的描述,这样的操作与直接db.col.update({},{$set:{“k”:v}},{multi:true}) 这样全表修改没啥区别。 注册 或 登录