如何用UPDATE查询替换MongoDB中的部分字符串.

例如,我有以下内容:

_id: 123
url:"test.com?from_user=1"
name:"Superhero"

_id:124
url:"regex.com?from_user=3"
name:"Journalist"

_id:123
url:"test.com?from_user=2"
name:"Software Developer"

我想用url="test.com"的_id:123部分替换所有文档到"sample.com",以获得以下内容:

_id: 123
url:"sample.com?from_user=1"
name:"Superhero"

_id:124
url:"regex.com?from_user=3"
name:"Journalist"

_id:123
url:"sample.com?from_user=2"
name:"Software Developer"

我不知道怎么把绳子的一部分替换掉

推荐答案

也许是这样的:

db.collection.update({
 "url": {
   "$regex": "test.com"
}
},
[
{
"$set": {
  "url": {
    "$replaceAll": {
      "input": "$url",
      "find": "test.com",
      "replacement": "example.com"
    }
   }
  }
 }
],
{
 "multi": true
})

解释:

  1. 匹配URI字段中包含test.com的所有文档.

  2. 使用聚合管道将匹配部件更新为预期的

  3. 使用MULTI:TRUE更新所有此类文档

Playground

Mongodb相关问答推荐

如何在MongoDB中查找和过滤嵌套数组

如何在MongoDB中通过限制和跳过查找项进行匹配

如何根据两个 struct 创建一个Mongo文档?

为什么这个查询可以在MongoDB中使用?

从 Amazon S3(Next.js、Mongodb、Mongoose)删除图像

如何将交易列表变成 token 数量的对象?

如何过滤查找mongodb的结果

MongoDB 到 Snowflake 连续加载

findOneAndUpdate 和 findOneAndReplace 有什么区别?

Mongodb插入没有_id字段的文档

$elemMatch 的 MongoDB 索引

如何在 Mongoose 中更新数组值

如何在 mongoDB 中聚合巨大的数组?

在 Postgres JSON 数组中查询

majority和 linearizable的区别

如何使用 MongoDB C# 驱动程序有条件地组合过滤器?

了解 Mongoose 中的关系和外键

Mongo:匹配聚合查询中的日期似乎被忽略了

Meteor订阅不更新集合的排序顺序

MongoDb - 利用多 CPU 服务器进行写入繁重的应用程序