MongoDB数据库类replace替换字符串指定内容

 更新时间:2023年05月24日 11:05:43   作者:小沈同学呀  
mongoDB是没有定义replace函数的,那么如果有需求需要替换nongo中数据的某一部分,怎么办?下面这篇文章主要给大家介绍了关于MongoDB数据库类replace替换字符串指定内容的相关资料,需要的朋友可以参考下

需求介绍

根据业务发展,现在需要对已经存在的数据进行处理,需要替换掉字段中指定字符串。

目的数据结构为:

{
"_id" : ObjectId("6166fa27de458266eecdb288"),
"receiverId" : NumberLong(1011500013127618),
"senderId" : NumberLong(1011500000008954),
"companyId" : 1.0,
"status" : 1.0,
"dataSources" : 4.0,
"senderType" : "employee",
"receiverType" : "customer",
"mediaType" : "text",
"connectMode" : "sys_follow",
"messageType" : "conversation",
"businessId" : NumberLong(1011500013127618),
"createTime" : ISODate("2020-01-21T04:01:23.000Z"),
"updateTime" : ISODate("2020-01-21T04:01:23.000Z"),
"message" : "1.资产京东:无\r\n2.工作京东:现金\r\n3.贷款用途:\r\n4.需要金额和时间:\r\n5.推荐产品:\r\n6.报费京东:\r\n7.征信负债:\r\n8.不签约原因:",
"_class" : "com.ysjr.base.domain.entity.ConversationInfo",
"followId" : NumberLong(1011500031014664),
"followType" : "FW001",
"result" : 1,
"intention" : "FI006",
"loseOrderReason" : [
"LR003"
],
"exec" : 1.0
}

需要将跟进数据的 message 字段中的 ”京东“ 字段替换为 ”其他“。

技术分析

分析发现在MYSQL等关系数据库中有replace函数,对字符串中的字符进行替换。对于mongodb经查询官方文档,发现也有相似的语法可以实现替换功能。如下所示:

1、$replaceOne 语法,但是每次只能更新字符串中发现的第一个目的串

2、javascript语法,在mongodb语法中写js代码来替换字符串,该种方式可以兼容多个目的串的情况,缺点是执行效率慢

3、java代码,java代码直接获取字符串进行replaceAll() 函数替换 ,缺点是需要写代码并且执行效率慢。

综合以上实现方式,结合实际需求,我们本次数据处理选择第二种方式 javascript 语法集合mongodb语法实现。虽然执行效率慢,但是如果采用第一种我们需要执行多次,第三种需要写代码。对于一个一次性处理数据的需求,采用简单有效且仅损失部分性能我们是可以接受的。

技术积累

1、replaceOne 语法

db.getCollection('集合名称')
.updateMany( {},//查询条件 
[{ $set: {"字段名称": { $replaceOne: { input:"字段名称", find:"需要替换的字符", replacement:"目的字符" }//替换语法
 }} }] );

2、javascript语法

db.getCollection('集合名称') 
.find({})//查询条件 
.forEach(//循环获取目标数据 
function(item) { 
var message = item['字符名称']; 
message = message.replace(/需要替换的字符/g, '目的字符');//目标字符串替换,/g 标识全局变量直接解决raplaceAll不支持方案,可以替换多个串 
db.getCollection('集合名称').updateOne({"_id":item['_id']},{$set:{"字段名称":message,"exec":1}});//修改目标字段,完成替换 
});

实战演示

将所有跟进数据的 message 字段中的 ”京东“ 字段替换为 ”其他“

我们直接在测试环境用第二种示范:

1、查询满足条件的数据

db.getCollection('conversation_info') 
.find({"connectMode":"sys_follow","message":{$regex:"京东",$options:"$i"}})

 如图所示有在测试环境数据库中有两条,其中一条目标字段中有多个目的字符串。

2、在mongodb语法中融入javascript语法并执行

db.getCollection('conversation_info') 
.find({"connectMode":"sys_follow","message":{$regex:"京东",$options:"$i"}}) 
.forEach( function(item) { 
var message = item['message']; 
message = message.replace(/京东/g, '其他'); db.getCollection('conversation_info').updateOne({"_id":item['_id']},{$set:{"message":message,"exec":1}}); 
});

 如图所示执行完成,提示成功但语法效率较低。

3、查看刚刚被修改的数据

db.getCollection('conversation_info') 
.find({"connectMode":"sys_follow","message":{$regex:"其他",$options:"$i"}})

 如图所示,发现全部替换为目标字符串,测试完成。

总结:

MongoDB 类replace替换字符串指定内容,replaceOne 语法仅能够替换目标字段中第一次出现的字符串,如果出现多次需要多次执行 replaceOne 语法;如果用javascript 语法可以完全兼容多个目标字符替换,极大的方便我们处理数据。

到此这篇关于MongoDB数据库类replace替换字符串指定内容的文章就介绍到这了,更多相关MongoDB替换字符串内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MongoDB创建与删除数据库

    MongoDB创建与删除数据库

    这篇文章介绍了MongoDB创建与删除数据库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • MongoDB mongoexport工具的使用简介

    MongoDB mongoexport工具的使用简介

    这篇文章主要介绍了MongoDB mongoexport工具的使用简介,帮助大家更好的理解和学习使用MongoDB数据库,感兴趣的朋友可以了解下
    2021-03-03
  • 关于mongodb版本升级问题

    关于mongodb版本升级问题

    这篇文章主要介绍了关于mongodb版本升级问题,具有很好的参考价值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Mongodb 崩溃报错 Too many open files的问题解析

    Mongodb 崩溃报错 Too many open files的问题解析

    这篇文章主要介绍了Mongodb 崩溃报错 Too many open files的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • MongoDB系列教程(八):GridFS存储详解

    MongoDB系列教程(八):GridFS存储详解

    这篇文章主要介绍了MongoDB系列教程(八):GridFS存储详解,本文讲解了什么是GridFS、GridFS的实现原理等内容,需要的朋友可以参考下
    2015-05-05
  • mongodb 数据库操作详解--创建,切换,删除

    mongodb 数据库操作详解--创建,切换,删除

    mongodb是nosql里面最像关系型数据库的数据库。单表操作,基本上可以和关系型数据库差不多。mongodb比较易学,易用,分几期记录一下,学习和使用mongodb过程。
    2014-07-07
  • 记一次Mongodb中admin数据库导致的事故

    记一次Mongodb中admin数据库导致的事故

    这篇文章主要给大家介绍了关于一次Mongodb中admin数据库导致的事故的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • MongoDB 3.4配置文件避免入坑的注意事项

    MongoDB 3.4配置文件避免入坑的注意事项

    最近在配置mongodb的时候遇到了一些问题,现总结出来方便以后需要或同样遇到该问题的朋友们参考,下面这篇文章主要给大家介绍了关于MongoDB 3.4配置文件时避免入坑的两个注意事项,需要的朋友们下面随着小编来一起学习学习下吧。
    2017-09-09
  • Mongo复制集同步验证的实例详解

    Mongo复制集同步验证的实例详解

    这篇文章主要介绍了mongo复制集同步验证的实例详解的相关资料,这里提供实现的方法及示例代码,帮助大家学习理解,需要的朋友可以参考下
    2017-07-07
  • CentOS7.2 安装 MongoDB 3.4的教程

    CentOS7.2 安装 MongoDB 3.4的教程

    这篇文章主要介绍了CentOS7.2 安装 MongoDB 3.4的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论