欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間: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.需要金額和時間:\r\n5.推薦產(chǎn)品:\r\n6.報費京東:\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)也有相似的語法可以實現(xiàn)替換功能。如下所示:

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

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

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

綜合以上實現(xiàn)方式,結(jié)合實際需求,我們本次數(shù)據(jù)處理選擇第二種方式 javascript 語法集合mongodb語法實現(xiàn)。雖然執(zhí)行效率慢,但是如果采用第一種我們需要執(zhí)行多次,第三種需要寫代碼。對于一個一次性處理數(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不支持方案,可以替換多個串 
db.getCollection('集合名稱').updateOne({"_id":item['_id']},{$set:{"字段名稱":message,"exec":1}});//修改目標(biāo)字段,完成替換 
});

實戰(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)字段中有多個目的字符串。

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 語法可以完全兼容多個目標(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創(chuàng)建與刪除數(shù)據(jù)庫

    MongoDB創(chuàng)建與刪除數(shù)據(jù)庫

    這篇文章介紹了MongoDB創(chuàng)建與刪除數(shù)據(jù)庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • MongoDB mongoexport工具的使用簡介

    MongoDB mongoexport工具的使用簡介

    這篇文章主要介紹了MongoDB mongoexport工具的使用簡介,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • 關(guān)于mongodb版本升級問題

    關(guān)于mongodb版本升級問題

    這篇文章主要介紹了關(guān)于mongodb版本升級問題,具有很好的參考價值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Mongodb 崩潰報錯 Too many open files的問題解析

    Mongodb 崩潰報錯 Too many open files的問題解析

    這篇文章主要介紹了Mongodb 崩潰報錯 Too many open files的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • MongoDB系列教程(八):GridFS存儲詳解

    MongoDB系列教程(八):GridFS存儲詳解

    這篇文章主要介紹了MongoDB系列教程(八):GridFS存儲詳解,本文講解了什么是GridFS、GridFS的實現(xiàn)原理等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • mongodb 數(shù)據(jù)庫操作詳解--創(chuàng)建,切換,刪除

    mongodb 數(shù)據(jù)庫操作詳解--創(chuàng)建,切換,刪除

    mongodb是nosql里面最像關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫。單表操作,基本上可以和關(guān)系型數(shù)據(jù)庫差不多。mongodb比較易學(xué),易用,分幾期記錄一下,學(xué)習(xí)和使用mongodb過程。
    2014-07-07
  • 記一次Mongodb中admin數(shù)據(jù)庫導(dǎo)致的事故

    記一次Mongodb中admin數(shù)據(jù)庫導(dǎo)致的事故

    這篇文章主要給大家介紹了關(guān)于一次Mongodb中admin數(shù)據(jù)庫導(dǎo)致的事故的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • MongoDB 3.4配置文件避免入坑的注意事項

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

    最近在配置mongodb的時候遇到了一些問題,現(xiàn)總結(jié)出來方便以后需要或同樣遇到該問題的朋友們參考,下面這篇文章主要給大家介紹了關(guān)于MongoDB 3.4配置文件時避免入坑的兩個注意事項,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)下吧。
    2017-09-09
  • Mongo復(fù)制集同步驗證的實例詳解

    Mongo復(fù)制集同步驗證的實例詳解

    這篇文章主要介紹了mongo復(fù)制集同步驗證的實例詳解的相關(guān)資料,這里提供實現(xiàn)的方法及示例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2017-07-07
  • CentOS7.2 安裝 MongoDB 3.4的教程

    CentOS7.2 安裝 MongoDB 3.4的教程

    這篇文章主要介紹了CentOS7.2 安裝 MongoDB 3.4的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論