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

2024-09-21 00:35:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下文件:

{

   "dataset_path":"path_of_dataset",

   "project_1":{

      "model_1":"path_of_model_1",

      "model_2":"path_of_model_2"

   }

}

我想将“项目1”更改为“重命名的项目1”“模型1的路径”更改为“新模型1的路径”。结果输出应如下所示:

{

   "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: Updating the path X would create a conflict at X.


Tags: 文件ofpath项目模型路径projectnew
1条回答
网友
1楼 · 发布于 2024-09-21 00:35:13

这是因为您试图在一个查询中对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"}})

相关问题 更多 >

    热门问题