我需要替換集合中的一部分字串。我找到了這個答案https://stackoverflow.com/a/60353546/11904736但是我在嘗試時遇到了這個錯誤:
錯誤:更新操作檔案必須包含原子運算子
所以我相信我與 ReplaceOne 運算子非常接近,沒有錯誤,但我正在搜索的字串沒有改變。我必須在CanonicalWebLink屬性的所有集合中找到每個/mordu/episodes/并替換為/mordu/webseries/ :
db.mycollections.replaceOne(
{ "CanonicalWebLink": { $regex: "/mordu/\//episodes/" } },
{ "CanonicalWebLink": "/mordu/webseries/"})
有誰可以解釋為什么這段代碼不能像我預期的那樣作業?CanonicalWebLink 是這樣的 URL:“http://mywebsite/mordu/episodes/2/some-page-slug”
uj5u.com熱心網友回復:
從 mongoDB 4.4 版開始,您可以使用$replaceAll:
db.collection.update({
CanonicalWebLink: {
$regex: "/mordu/episodes/"
}
},
[
{
$set: {
CanonicalWebLink: {
$replaceAll: {
input: "$CanonicalWebLink",
find: "/mordu/episodes/",
replacement: "/mordu/webseries/"
}
}
}
}
],
{
multi: true
})
游樂場示例 v 4.4
對于 mongoDB 4.2 版(您可以在這里看到@Xavier Guihot 的回答):
db.collection.update({
CanonicalWebLink: {$regex: "/mordu/episodes/"}
},
[
{
$set: {
CanonicalWebLink: {
$concat: [
{
$arrayElemAt: [
{$split: ["$CanonicalWebLink", "/mordu/episodes/"]},
0
]
},
"/mordu/webseries/",
{
$arrayElemAt: [
{$split: ["$CanonicalWebLink", "/mordu/episodes/"]},
1
]
}
]
}
}
}
],
{
multi: true
})
游樂場示例 v 4.2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487239.html
