这就是田野 标识 “https://image.s3.ca-central-1.amazonaws.com/prod/game/163221197…”
“image.s3.ca-central-1.amazonaws.com”这部分我想更改为“cloudfront.net”,因为我需要将所有徽标从S3更新为cloudfont。
假设您的输入文档如下所示:
{
_id: 1,
logo: "https://image.s3.ca-central-1.amazonaws.com/prod/game/163221197…",
...
}
并且您希望将文档更新为如下所示:
{
_id: 1,
logo: "https://cloudfront.net/prod/game/163221197…",
...
}
那么@rickhg12hs的建议绝对是正确的选择。
update
将使用聚合管道语法,看起来像这样:
db.collection.update({},
[
{
$addFields: {
logo: {
$replaceOne: {
input: "$logo",
find: "image.s3.ca-central-1.amazonaws.com",
replacement: "cloudfront.net"
}
}
}
}
])
这里是工作游乐场示例。
还值得一提的是,这个问题的措辞有点误导。您无法“部分更新”MongoDB 中的字段。虽然措辞背后的意图是表明我们在逻辑上尝试修改现有字符串,但当数据库发生更改时,这将被转换为为该字段设置新的字符串值。这不会改变这个答案,但在将来考虑 MongoDB 的行为时,记住它可能是有用的信息。