繁体   English   中英

如何使用 pymongo 重命名 mongodb 中的父字段名称和嵌套字段值?

[英]How do I rename parent field name and nested field value in mongodb using pymongo?

我有以下文件:

{

   "dataset_path":"path_of_dataset",

   "project_1":{

      "model_1":"path_of_model_1",

      "model_2":"path_of_model_2"

   }

}

我想将“project_1”更改为“renamed_project_1” ,将“path_of_model_1”更改为“new_model_1_path” 结果 output 应如下所示:

{

   "dataset_path":"path_of_dataset",

   "renamed_project_1":{

      "renamed_model_1":"new_model_1_path",

      "model_2":"path_of_model_2"

   }

}

这是我尝试过的:

db.collection.update_many({'dataset_path': 'path_to_dataset'}, {'$rename': {"project_1": "renamed_project_1"}},
                          {'$set': {"project_1.model_1": "new_model_1_path"}})

但上面的查询抛出以下错误:

pymongo.errors.WriteError:更新路径 X 会在 X 处产生冲突。

那是因为您试图在单个查询中对project_1字段进行两次变异。 Mongo只是不知道如何处理。 您应该考虑拆分两个操作:

db.collection.update_many({'dataset_path': 'path_to_dataset'}, {'$rename': {"project_1": "renamed_project_1"}})
db.collection.update_many({'dataset_path': 'path_to_dataset'}, {'$set': {"renamed_project_1.model_1": "new_model_1_path"}})
db.collection.update_many({}, {"$rename": {"old_value": "new_value"}})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM