В версии MongoDB> 4.0
вы можете выполнить агрегационный конвейер в .update () , попробуйте выполнить запрос ниже, который перезапишет поле imageUrl
новым значение, где $substr
помогает обрезать первую букву исходной строки:
db.collection.updateMany({},
[{
$set: {
imageUrl: {
$substrBytes: ["$imageUrl", 1, -1]
}
}
}]
);
Тест: mongoplayground
Примечание: В целом запрос должен работать нормально, но в прошлом я видел пару проблем, выполняющих .updateMany
для таких клиентов, как robo3T
или даже с более старой оболочкой mon go, если вы видите это, то я бы предложил использовать .update()
с опцией {multi : true}
.
Обновление: В последних версиях MongoDB> = 3.4
необходимо использовать $substrBytes
, который является псевдонимом для $substr
. Кроме того, если вы хотите проверить, существует ли /
в качестве первого символа для поля imageUrl
, вам необходимо добавить {imageUrl: /^[/]/}
в часть фильтра .updateMany()
.