最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB數(shù)據(jù)庫類replace替換字符串指定內(nèi)容

 更新時(shí)間:2023年05月24日 11:05:43   作者:小沈同學(xué)呀  
mongoDB是沒有定義replace函數(shù)的,那么如果有需求需要替換nongo中數(shù)據(jù)的某一部分,怎么辦?下面這篇文章主要給大家介紹了關(guān)于MongoDB數(shù)據(jù)庫類replace替換字符串指定內(nèi)容的相關(guān)資料,需要的朋友可以參考下

需求介紹

根據(jù)業(yè)務(wù)發(fā)展,現(xiàn)在需要對已經(jīng)存在的數(shù)據(jù)進(jìn)行處理,需要替換掉字段中指定字符串。

目的數(shù)據(jù)結(jié)構(gòu)為:

{
"_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.資產(chǎn)京東:無\r\n2.工作京東:現(xiàn)金\r\n3.貸款用途:\r\n4.需要金額和時(shí)間:\r\n5.推薦產(chǎn)品:\r\n6.報(bào)費(fèi)京東:\r\n7.征信負(fù)債:\r\n8.不簽約原因:",
"_class" : "com.ysjr.base.domain.entity.ConversationInfo",
"followId" : NumberLong(1011500031014664),
"followType" : "FW001",
"result" : 1,
"intention" : "FI006",
"loseOrderReason" : [
"LR003"
],
"exec" : 1.0
}

需要將跟進(jìn)數(shù)據(jù)的 message 字段中的 ”京東“ 字段替換為 ”其他“。

技術(shù)分析

分析發(fā)現(xiàn)在MYSQL等關(guān)系數(shù)據(jù)庫中有replace函數(shù),對字符串中的字符進(jìn)行替換。對于mongodb經(jīng)查詢官方文檔,發(fā)現(xiàn)也有相似的語法可以實(shí)現(xiàn)替換功能。如下所示:

1、$replaceOne 語法,但是每次只能更新字符串中發(fā)現(xiàn)的第一個(gè)目的串

2、javascript語法,在mongodb語法中寫js代碼來替換字符串,該種方式可以兼容多個(gè)目的串的情況,缺點(diǎn)是執(zhí)行效率慢

3、java代碼,java代碼直接獲取字符串進(jìn)行replaceAll() 函數(shù)替換 ,缺點(diǎn)是需要寫代碼并且執(zhí)行效率慢。

綜合以上實(shí)現(xiàn)方式,結(jié)合實(shí)際需求,我們本次數(shù)據(jù)處理選擇第二種方式 javascript 語法集合mongodb語法實(shí)現(xiàn)。雖然執(zhí)行效率慢,但是如果采用第一種我們需要執(zhí)行多次,第三種需要寫代碼。對于一個(gè)一次性處理數(shù)據(jù)的需求,采用簡單有效且僅損失部分性能我們是可以接受的。

技術(shù)積累

1、replaceOne 語法

db.getCollection('集合名稱')
.updateMany( {},//查詢條件 
[{ $set: {"字段名稱": { $replaceOne: { input:"字段名稱", find:"需要替換的字符", replacement:"目的字符" }//替換語法
 }} }] );

2、javascript語法

db.getCollection('集合名稱') 
.find({})//查詢條件 
.forEach(//循環(huán)獲取目標(biāo)數(shù)據(jù) 
function(item) { 
var message = item['字符名稱']; 
message = message.replace(/需要替換的字符/g, '目的字符');//目標(biāo)字符串替換,/g 標(biāo)識全局變量直接解決raplaceAll不支持方案,可以替換多個(gè)串 
db.getCollection('集合名稱').updateOne({"_id":item['_id']},{$set:{"字段名稱":message,"exec":1}});//修改目標(biāo)字段,完成替換 
});

實(shí)戰(zhàn)演示

將所有跟進(jìn)數(shù)據(jù)的 message 字段中的 ”京東“ 字段替換為 ”其他“

我們直接在測試環(huán)境用第二種示范:

1、查詢滿足條件的數(shù)據(jù)

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

 如圖所示有在測試環(huán)境數(shù)據(jù)庫中有兩條,其中一條目標(biāo)字段中有多個(gè)目的字符串。

2、在mongodb語法中融入javascript語法并執(zhí)行

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}}); 
});

 如圖所示執(zhí)行完成,提示成功但語法效率較低。

3、查看剛剛被修改的數(shù)據(jù)

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

 如圖所示,發(fā)現(xiàn)全部替換為目標(biāo)字符串,測試完成。

總結(jié):

MongoDB 類replace替換字符串指定內(nèi)容,replaceOne 語法僅能夠替換目標(biāo)字段中第一次出現(xiàn)的字符串,如果出現(xiàn)多次需要多次執(zhí)行 replaceOne 語法;如果用javascript 語法可以完全兼容多個(gè)目標(biāo)字符替換,極大的方便我們處理數(shù)據(jù)。

到此這篇關(guān)于MongoDB數(shù)據(jù)庫類replace替換字符串指定內(nèi)容的文章就介紹到這了,更多相關(guān)MongoDB替換字符串內(nèi)容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MongoDB數(shù)據(jù)庫安裝配置、基本操作實(shí)例詳解

    MongoDB數(shù)據(jù)庫安裝配置、基本操作實(shí)例詳解

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫安裝配置、基本操作,結(jié)合實(shí)例形式詳細(xì)分析了MongoDB數(shù)據(jù)庫安裝配置具體步驟、相關(guān)命令與基本操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-01-01
  • 基于MongoDB實(shí)現(xiàn)文件的分布式存儲

    基于MongoDB實(shí)現(xiàn)文件的分布式存儲

    分布式文件存儲的方案有很多,今天分享一個(gè)基于mongodb數(shù)據(jù)庫來實(shí)現(xiàn)文件的存儲,mongodb支持分布式部署,以此來實(shí)現(xiàn)文件的分布式存儲,需要的朋友可以參考下
    2025-05-05
  • MongoDB聚合運(yùn)算符$divide詳解

    MongoDB聚合運(yùn)算符$divide詳解

    $divide聚合運(yùn)算符返回兩個(gè)表達(dá)式相除的結(jié)果,參數(shù)通過數(shù)組傳遞給$divide運(yùn)算符,這篇文章介紹了MongoDB聚合運(yùn)算符$divide的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • MongoDB遠(yuǎn)程訪問配置步驟詳解

    MongoDB遠(yuǎn)程訪問配置步驟詳解

    MongoDB遠(yuǎn)程訪問相信很多人都要到這個(gè)需求,所以這篇文章給大家主要介紹了MongoDB遠(yuǎn)程訪問配置的步驟,文中給出了詳細(xì)的步驟及示例代碼,相信對大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • MongoDB中的一些坑(最好不要用)

    MongoDB中的一些坑(最好不要用)

    這篇文章主要介紹了MongoDB中的一些坑(最好不要用),本文總結(jié)了MongoDB 數(shù)據(jù)庫級鎖、建索引導(dǎo)致數(shù)據(jù)庫阻塞、不合理使用嵌入 embed document、不合理使用 Array 字段等4個(gè)坑,需要的朋友可以參考下
    2015-03-03
  • MongoDB 數(shù)據(jù)庫的命名、設(shè)計(jì)規(guī)范詳解

    MongoDB 數(shù)據(jù)庫的命名、設(shè)計(jì)規(guī)范詳解

    隨著MongoDB的普及和使用量的快速增長,為了規(guī)范使用,便于管理和獲取更高的性能,整理此文檔
    2020-02-02
  • MongoDB數(shù)據(jù)庫插入、更新和刪除操作詳解

    MongoDB數(shù)據(jù)庫插入、更新和刪除操作詳解

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫插入、更新和刪除操作詳解,需要的朋友可以參考下
    2014-03-03
  • mongodb聚合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    mongodb聚合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了mongodb聚合的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • MongoDB數(shù)據(jù)查詢方法干貨篇

    MongoDB數(shù)據(jù)查詢方法干貨篇

    查詢操作在我們?nèi)粘2僮鲾?shù)據(jù)庫的時(shí)候是必不可少的一部分,最近有些空閑時(shí)間,所有就將MongoDB數(shù)據(jù)查詢的一些方法技巧總結(jié)了處理,這篇文章主要介紹了MongoDB數(shù)據(jù)查詢的相關(guān)資料,需要的朋友可以參考借鑒,一起來看看吧。
    2017-05-05
  • NoSQL優(yōu)缺點(diǎn)與MongoDB數(shù)據(jù)庫簡介

    NoSQL優(yōu)缺點(diǎn)與MongoDB數(shù)據(jù)庫簡介

    這篇文章介紹了NoSQL的優(yōu)缺點(diǎn)與MongoDB數(shù)據(jù)庫,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論

满洲里市| 甘洛县| 保定市| 吉林省| 恩平市| 沾化县| 大渡口区| 韩城市| 新沂市| 盘山县| 泰兴市| 平邑县| 林西县| 五台县| 策勒县| 武宁县| 长白| 伊金霍洛旗| 大连市| 德惠市| 阳谷县| 思茅市| 富裕县| 宜州市| 临漳县| 江阴市| 和平县| 海晏县| 延川县| 庆元县| 乐山市| 赣榆县| 随州市| 榆社县| 攀枝花市| 大化| 锡林郭勒盟| 聊城市| 金湖县| 克拉玛依市| 固镇县|