【发布时间】:2019-05-07 14:57:57
【问题描述】:
我想重命名我们的一个 MongoDB 集合中的一个属性,因为它在应该是单数的地方是复数的。但是,当我在 Mongo shell 中尝试这个时:
db.getCollection("customers").updateMany( { _id: {$exists: true} }, { $rename: { "billingOptions.0.paymentCards": "billingOptions.0.paymentCard" } } )
...我得到这个“不能是数组元素”的错误:
"errmsg" : "源字段不能是数组元素, 带有_id的文档中的“billingOptions.0.paymentCards”: ObjectId('3d12fefc093r76146ccf50g8') 有一个名为的数组字段 '计费选项'"
不知道为什么这会是一个问题,因为我准确地告诉它要定位哪个数组元素。但是,无论哪种方式,既然如此,我可以使用什么操作来重命名这个属性
以下是文档相关部分的示例:
"billingOptions" : [
{
"method" : "private",
"paymentCards": {
"deleted" : false,
// other props
}
},
]
这就是我想要的样子:
"billingOptions" : [
{
"method" : "private",
"paymentCard": {
"deleted" : false,
// other props
}
},
]
请注意,“billingOptions”是文档根目录上的一个属性。我要做的就是将“paymentCards”的所有实例重命名为“paymentCard”,因为它在这里是一个单一的对象,而不是一个数组。
【问题讨论】:
-
您想仅从第一个 billingOption(索引
0)还是从所有这些重命名paymentCards?您能否分享一个示例文档和预期的更新文档? -
理想情况下,我会做所有这些,而不仅仅是第一个数组元素。
-
我在上面添加了文档结构。
标签: mongodb