mef*_*f27 3 mongodb mongodb-query mongodb-update aggregation-framework
我正在使用 MongoDB v4.4。我的文档结构如下所示:
{
_id: ObjectId("..."),
photos: ["image1.png", "image2.png"]
},
{
_id: ObjectId("..."),
photos: ["image3.png", "another_image.png, image5.jpg"]
},
{
_id: ObjectId("..."),
photos: ["image_name.jpg", "image2.jpg"]
},
Run Code Online (Sandbox Code Playgroud)
我正在尝试将包含“.png”的所有字符串更改为“.jpg”。
我已经尝试过以下方法:
db.users.updateMany({
photos: { $regex: /.png/ }
}, [{
$set: {
"photos.$[]": {
$replaceOne: {
input: "photos.$[]", find: ".png", replacement: ".jpg"
}
}
}
}])
Run Code Online (Sandbox Code Playgroud)
这会返回错误:
MongoServerError: Invalid $set :: caused by :: FieldPath field names may not start with '$'.
Run Code Online (Sandbox Code Playgroud)
您需要迭代数组循环photos并替换扩展名,
$map迭代photos数组的循环$replaceOne替换扩展名db.users.updateMany(
{ photos: { $regex: ".png" } },
[{
$set: {
photos: {
$map: {
input: "$photos",
in: {
$replaceOne: {
input: "$$this",
find: ".png",
replacement: ".jpg"
}
}
}
}
}
}]
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |