首页 > 解决方案 > 如何更改嵌入类型的属性名称?

问题描述

如何通过查询 $rename 更改嵌入类型的名称?

{ list_name: [{ name_1: String }] } => { list_name: [{ name_2: String }] }

我试过了db.getCollection('test').updateMany({}, { $rename: { 'list_name.name_1': 'name_2' }})

但它抛出一个错误:WriteError: cannot use the part (list_name of list_name.name_1) to traverse the element ({list_name: [ { name_1: "test" } ]})

标签: mongodb

解决方案


如果这些字段在数组元素中,$rename 不起作用

参考

要实现,您需要$unset逐个$set文档。你也可以使用bulkwrite

list_name是一个数组。因此$rename没有工作。

当我搜索时,我得到了这个。如果您的文档数量较少,您可以参考第二个答案。

否则,您需要使用bulk writemongo dump options


推荐阅读