javascript - 使用 REGEX 替换 mongoDB 中所有相同的单词

标签 javascript regex mongodb mongo-shell

我正在尝试在 mongoDB 中使用 mongosh 替换我在集合中为其他人选择的所有单词。

例如,我有这个:

_id:12345678901
name:"Peter Parker"
profession:"Superhero"

_id:12345678902
name:"Peter Parker"
profession:"Journalist"

_id:12345678902
name:"Hulk"
profession:"Software Developer"

我想用“Superman”替换名为“firstList”的集合中的所有“Peter Parker”以获得以下结果:

_id:12345678901
name:"Superman"
profession:"Superhero"

_id:12345678902
name:"Superman"
profession:"Journalist"

_id:12345678902
name:"Hulk"
profession:"Software Developer"

我正在尝试这个,但它不起作用:

db.firstList.replace({
  "name": {
    "$regex": "(/( |^)Peter Parker\b/g, "$Superman")"
  }
})

最佳答案

根据您的数据,您不需要正则表达式,您可以按原样使用该单词进入查找阶段。

您可以使用 [] 将聚合查询用于更新,如下所示:

db.collection.update({
  "name": {
    "$regex": "Peter Parker"
  }
},
[
  {
    "$set": {
      "name": {
        "$replaceAll": {
          "input": "$name",
          "find": "Peter Parker",
          "replacement": "Superman"
        }
      }
    }
  }
],
{
  "multi": true
})

示例 here

顺便说一句,如果需要,您可以将正则表达式用于 find 对象。但如果您想匹配整个单词“Peter Parker”,您可以不使用正则表达式来使用。

关于javascript - 使用 REGEX 替换 mongoDB 中所有相同的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69191753/

相关文章:

javascript - 如何避免 HTML 和 JavaScript/jQuery 中其他元素后面的元素发生事件

javascript - nodejs mongoose 删除命中错误 : Can't set headers after they are sent

javascript - 递归javascript数组长度

javascript - Angular 2 : array. splice() 正在从 DOM 中删除元素

javascript - d3 缩放变换有问题。错误 : [ts] Property 'translate' does not exist on type 'Event | BaseEvent'

regex - 使用正则表达式等标准生成字符串

c# - 删除破折号但不删除连字符

JavaScript 正则表达式帮助

mongodb - 无法连接到 MongoDB Atlas 集群 : DNSHostNotFound

node.js - Model.find() 在 Mongoose 中返回空