Python 对于给定的文档,如何更新和重命名mongodb中的字段?

Python 对于给定的文档,如何更新和重命名mongodb中的字段?,python,python-3.x,mongodb,pymongo-3.x,Python,Python 3.x,Mongodb,Pymongo 3.x,我正在浏览mongo光标列表,对于在不同集合中具有匹配项的选定文档,我将文档中的一个字段(如“f”)重命名为“g”,并将另一个集合中名为“f”的字段添加到文档中 我是pymongo的新手,但我的想法如下: 1) 改名 2) 更新 这是正确的吗?有没有更好的方法? 如果我只是更新一个字典并用它替换文档,效率会更高吗?在你的1)示例中,你的第一个参数{u id:1}是你的过滤器,任何匹配它的文档都会被重命名。在这种情况下,只有_id等于1的文档,可能不是一个实际示例。您可以在某些字段上进行筛选,例如

我正在浏览mongo光标列表,对于在不同集合中具有匹配项的选定文档,我将文档中的一个字段(如“f”)重命名为“g”,并将另一个集合中名为“f”的字段添加到文档中

我是pymongo的新手,但我的想法如下: 1) 改名

2) 更新

这是正确的吗?有没有更好的方法? 如果我只是更新一个字典并用它替换文档,效率会更高吗?

在你的1)示例中,你的第一个参数{u id:1}是你的过滤器,任何匹配它的文档都会被重命名。在这种情况下,只有_id等于1的文档,可能不是一个实际示例。您可以在某些字段上进行筛选,例如{'docname':'doc_42'}

在2)我没有看到过滤器,无法知道要修改哪些文档。update_one仅表示将更新与筛选器匹配的第一个文档

把整个文档读入词典并写回通常不是最好的主意。当文档变大时,需要大量的网络活动

db.collection.update( { _id: 1 }, { $rename: { 'f': 'g' } } )
db.collection.update_one({"$set": {"f": "new content"})