我正在尝试使用以下命令更新我的
campaigns
集合:
db.campaigns.updateMany(
{ _id: ObjectId("65b1b0dd6182c1dfe906f3be") },
{
$set: {
"status": "$created_by",
"is_active_new": "$is_active.type",
}
}
)
当我运行此命令时,状态实际上设置为“$created_by”并且该值未解析。根据我的理解,它应该具有 $created_by 字段的实际值,而不是文字字符串。 $is_active_new 也是如此。
MongoDb 版本是 6.0.12 Enterprise。
正如评论中提到的,您需要一个聚合管道。在您的情况下,您只需要添加括号
[]
:
db.campaigns.updateOne(
{ _id: ObjectId("65b1b0dd6182c1dfe906f3be") },
[{
$set: {
"status": "$created_by",
"is_active_new": "$is_active.type",
}
}]
)
注意,
_id
是主键,因此updateMany
没有多大意义。 (但事实上这对你的情况没有任何区别)