【发布时间】:2021-04-22 19:14:30
【问题描述】:
我有一个名为 Track 的 Mongoose 集合,它有一个 fitnessPlan 子文档数组,每个子文档当前都有一个 month 字段,需要在生产中更改为 week。我正在使用mongoose-migrate 将这些值从旧月份字段迁移到新的星期字段。这是我目前得到的:
async function up () {
await Track.updateMany({},
{
$set: {
'fitnessPlans.$[elem].month': '$fitnessPlans.$[elem].week',
},
},
{ arrayFilters: [{ "elem.week": { $gte: 0 } }], strict: false, });
await Track.updateMany({},
{
$unset: {
'fitnessPlans.$[elem].week': '',
},
},
{ arrayFilters: [{ "elem.week": { $gte: 0 } }], strict: false, });
}
但是,mongoose-migrate 抛出以下错误:
Cast to number failed for value "$fitnessPlans.$[elem].week" at path "month"
我猜这是因为字符串没有正确评估,但我不确定如何在此设置中引用该字段的值。
【问题讨论】:
-
您只想按月重命名该字段?还是两者都需要?
-
是的,我想重命名该字段,但无法将 $rename 用于数组中的文档,因此您需要执行 $set 和 $unset