MongoDB update语句删除字段中的部分文本

MongoDB update语句删除字段中的部分文本,mongodb,Mongodb,我有一个mongoDB集合,其中有一个名为“Url”的字段。这个收藏中有许多记录。在此字段内,始终包含以下文本: “” 例如“” 我想删除“”的部分,因此最终结果应该是“folder1/folder2/blah.jpg” 我想写一个mongodb更新语句,我不知道从哪里开始。我可以想到两件事:(a)删除前x个字符,或者(b)用空字符替换文本。但是,文本包含许多斜杠(/) 非常感谢您的帮助。此聚合查询和结果更新将起作用: db.urls.aggregate( [ { $proj

我有一个mongoDB集合,其中有一个名为“Url”的字段。这个收藏中有许多记录。在此字段内,始终包含以下文本:

“” 例如“”

我想删除“”的部分,因此最终结果应该是“folder1/folder2/blah.jpg”

我想写一个mongodb更新语句,我不知道从哪里开始。我可以想到两件事:(a)删除前x个字符,或者(b)用空字符替换文本。但是,文本包含许多斜杠(/)


非常感谢您的帮助。

此聚合查询和结果更新将起作用:

db.urls.aggregate( [ 
  { 
      $project: { 
          url: { 
              $split: [ 
                  "$url", 
                  "http://image-assets.s3.us-west-2.amazonaws.com/"
              ] 
          }
      }
  } 
] ).forEach( doc => db.urls.updateOne( { _id: doc._id }, { $set: { url: doc.url[1] } } )
使用这两个输入文档:

{ url: "http://image-assets.s3.us-west-2.amazonaws.com/folder1/folder2/blah.jpg" }
{ url: "http://image-assets.s3.us-west-2.amazonaws.com/folder1/folder2/blah2.jpg" }
更新后的
url
字段将具有以下值:

folder1/folder2/blah.jpg
folder1/folder2/blah2.jpg


[编辑和添加]

添加带有要更新的url字符串的
url
字段的检查。将此
$match
阶段添加到上述聚合查询中的
$project
阶段之前

请注意,在正则表达式搜索字符串中,
^
表示“以开头”,并且
(点)以
\
(反斜杠)作为前缀,因此它仅被视为点(而不是正则表达式元字符)


谢谢你,这很有效。唯一不起作用的是当它找不到值时,结果字段中会出现null。我们是否有其他方法使用替换函数,以便在找不到文本时不使用它?您的意思是某些文档中不存在字段
url
?我添加了一个检查,确保处理时只考虑以“”开头的字符串。如果
url
字段不存在,或者其值为
null
,则文档也不会被处理。prasad uu您对这一点非常慷慨。谢谢,很好用。还有一个问题,如果我只是想用“XYZ”替换say patter“ABC”,这不能是一个拆分。我应该使用什么?
db.test.updateOne({str:ABC},{$set:{str:XYZ}})
;代码将更新符合条件的第一个文档
str:“ABC”
。要更新所有文档,请使用
updateMany
  { 
      $match: { 
          url: { $regex: '^http://image-assets\.s3\.us-west-2\.amazonaws\.com/' } 
      } 
  },