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

MongoDB批量將時間戳轉(zhuǎn)為通用日期格式示例代碼

 更新時間:2018年07月06日 11:48:04   作者:jesseshi  
這篇文章主要給大家介紹了關(guān)于MongoDB批量將時間戳轉(zhuǎn)為通用日期格式的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

時間戳(timestamp),通常是一個字符序列,唯一地標識某一刻的時間。本文將詳細介紹MongoDB批量將時間戳轉(zhuǎn)為通用日期格式的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細的介紹吧

1,官網(wǎng)提供的MONGODB遍歷腳本:

官方文檔地址:https://docs.mongodb.org/manual/tutorial/remove-documents/
>var arr = ["ab","cd","ef"]
>var show = function(value,index,ar){ print(value) }
>arr.forEach(show)
ab
cd
ef

2,MONGODB的模糊查詢

MongoDB模糊查詢方法示例:

模糊查詢:tname包含某個關(guān)鍵字測試'

cd /opt/soft/mongodb/bin
./mongo --host 192.168.0.1 --port 17017 test
db.test_info.find({"tname": {$regex: '測試', $options:'i'}}) 
db.test_info.find({"tname": {$regex:/測試.*/i}}) 

需要找出所有時間戳的數(shù)據(jù)記錄,因為時間戳多是以數(shù)字開頭,最近幾年的都是14XXX的,所以正則表達式以14開頭搜索,實現(xiàn)方式如下:

mongos> use pos
switched to db pos
mongos> 
db.paymentinfo.find({"paymentTime": {$regex: '14', $options:'i'}}).count();
mongos> db.paymentinfo.find({"paymentTime": {$regex: '144', $options:'i'}}).count();
1995
mongos> 

查詢到有1995條記錄,蠻多的,需要處理記錄數(shù)不少。

建立遍歷函數(shù):

db.cms_Content.find({"userId":"444333f107624489bae28140d1970bbc"}).forEach(function(x) {
 if(x.title&&x.fileName){
 print(x.contentId);
db.cms_Content.update({"contentId":x.contentId},{"$set":{"title":x.fileName}});
 }
})

PS:證明不能用,效果一般

3,首先刪除一部分TXNTYPE為1的脹數(shù)據(jù)

刪除查詢出來的集合數(shù)據(jù)

db.paymentinfo.remove( {"txnType": {$regex: '1', $options:'i'}}, 300 );

刪除所以查詢出來的記錄:

db.paymentinfo.remove( {"txnType": {$regex: '1', $options:'i'}});

刪除paymentTime=0的數(shù)據(jù)記錄

db.paymentinfo.remove( { paymentTime : "0" } )

4,遺留問題需要解決

for (var i = 0, len = 3; i < len; i++) {var child=dschilds[i]; var id=child._id; printjson((id)); var paymentTime=child.paymentTime; printjson(paymentTime)}  批量修改校驗錯誤日期數(shù)據(jù)的期待解決的問題

 db.paymentinfo.update({"_id": ObjectId("55d56fdbe4b0c1f89b5356ae")},{$set:{"paymentTime" : "14400511608049527"}},true);
 var ds= db.paymentinfo.find({"paymentTime": {$regex: '144', $options:'i'}});
 for (var i = 0, len = 1; i < len; i++) {
 var child=dschilds[i]; 
 var id=child._id; 
 printjson(id);
 var paymentTime=child.paymentTime; 
 var datestr=paymentTime 
 #問題在這里,這個日期是時間戳,比如1440560826340的模式,請問下,在mongodb shell里面如何將時間戳變成字符串'2015-12-15 12:34:16'這樣的日期字符串呢?
 db.paymentinfo.update({"_id": id},{$set:{"paymentTime" :datestr}},true);
 db.paymentinfo.find({"_id": id});
 }
 db.paymentinfo.find({"_id":ObjectId("55dd36dc45ce9e75b91eb340")}).forEach(function (a) { a["paymentTime"] = new Date(parseInt(paymentTime) * 1000).toLocaleString().replace(/:\d{1,2}$/,' '); printjson(a) });

看到這里也不能解決我的問題,所以思路停止了,toLocaleString()獲得的是GST的日期格式串,不是我需要的yyyy-mm-dd hh:mm:ss結(jié)構(gòu)的日期格式數(shù)

5,找到突破口,使用JAVASCRIPT

mongodb官網(wǎng)已經(jīng)報錯提示有說明,mongodb shell里面是可以調(diào)用JavaScript腳本,這么說來,直接在窗口里面寫js腳本來實現(xiàn)就ok了,然后準備拿一條數(shù)據(jù)來驗證是否正確,結(jié)果成功了,驗證腳本如下:  – 單獨一條集合數(shù)據(jù)中,將時間戳變成日期字符串:

db.paymentinfo.find({"_id":ObjectId("55d56cbbe4b0c1f89b5356a4")}).forEach(function (a) { 
 #這個函數(shù)是在月、日、時分秒的個位數(shù)字前面補0操作的
 function tran_val(val){
 if(parseInt(val)<10){
 val="0" +val;
 }
 return val;
 }
 # 這里是paymentTime為時間戳
 var datenew = new Date(parseInt(paymentTime)); 
 # 獲取年月日
 var year=datenew.getFullYear(); 
 var month=tran_val(datenew.getMonth()+1);
 var date=tran_val(datenew.getDate()); 
 # 獲取時分秒
 var hour=tran_val(datenew.getHours());
 var minute=tran_val(datenew.getMinutes()); 
 var second=tran_val(datenew.getSeconds()); 
 # 組裝成標準的日期格式y(tǒng)yyy-mm-dd hh:mm:ss 
 var datastr=year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second; 
 a["paymentTime"]=datastr
 print(paymentTime); 
 printjson(a) }
 );

上面的例子表明直接用js腳本可以實現(xiàn)時間戳到日期格式轉(zhuǎn)變,那么下面就開始for循環(huán)批量修改:

 db.paymentinfo.update({"_id": ObjectId("55d56fdbe4b0c1f89b5356ae")},{$set:{"paymentTime" : "14400511608049527"}},true);
 # 使用遍歷數(shù)組的方式來操作144開頭的時間戳
 var ds= db.paymentinfo.find({"paymentTime": {$regex: '144', $options:'i'}});
 var dschilds=ds.toArray();
 for (var i = 0;i <dschilds.length ; i++) {
 var child=dschilds[i]; 
 var id=child._id; 
 var paymentTime=child.paymentTime;
 print(paymentTime);
 function tran_val(val){
  if(parseInt(val)<10){
  val="0" +val;
  }
  return val;
 }
 var datenew = new Date(parseInt(paymentTime)); 
 var year=datenew.getFullYear(); 
 var month=tran_val(datenew.getMonth()+1);
 var date=tran_val(datenew.getDate()); 
 var hour=tran_val(datenew.getHours());
 var minute=tran_val(datenew.getMinutes()); 
 var second=tran_val(datenew.getSeconds());
 var datestr=year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second; 
 # 這里開始進行修改操作
 db.paymentinfo.update({"_id": id},{$set:{"paymentTime" :datestr}},true);
 db.paymentinfo.find({"_id": id});
 }
 # 使用遍歷數(shù)組的方式來操作145開頭的時間戳
 var ds= db.paymentinfo.find({"paymentTime": {$regex: '145', $options:'i'}});
 var dschilds=ds.toArray();
 for (var i = 0;i <dschilds.length ; i++) {
 var child=dschilds[i]; 
 var id=child._id; 
 var paymentTime=child.paymentTime;
 print(paymentTime);
 function tran_val(val){
  if(parseInt(val)<10){
  val="0" +val;
  }
  return val;
 }
 var datenew = new Date(parseInt(paymentTime)); 
 var year=datenew.getFullYear(); 
 var month=tran_val(datenew.getMonth()+1);
 var date=tran_val(datenew.getDate()); 
 var hour=tran_val(datenew.getHours());
 var minute=tran_val(datenew.getMinutes()); 
 var second=tran_val(datenew.getSeconds());
 var datestr=year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second; 
 db.paymentinfo.update({"_id": id},{$set:{"paymentTime" :datestr}},true);
 db.paymentinfo.find({"_id": id});
 } 

6,碰到新的問題,統(tǒng)一日期格式,將斜杠變成橫杠

–批量修改日期 斜杠變成橫杠

 var ds= db.paymentinfo.find({"paymentTime": {$regex: '/', $options:'i'}});
 var dschilds=ds.toArray();
 for (var i = 0;i <dschilds.length; i++) {
 var child=dschilds[i]; 
 var id=child._id;
 var paymentTime=child.paymentTime;
 var paymentTime2=paymentTime.replace(/\//g,"-");
 db.paymentinfo.update({"_id": id},{$set:{"paymentTime" :paymentTime2}},true);
 print(paymentTime);print(paymentTime2);
 db.paymentinfo.find({"_id": id});
 } 
-- insert data
insert into t1 select 1,'a' from db1.t2;
call db1.proc_get_fints

OK,到此圓滿解決

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • MongoDB安裝使用并實現(xiàn)Python操作數(shù)據(jù)庫

    MongoDB安裝使用并實現(xiàn)Python操作數(shù)據(jù)庫

    Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。本文就詳細的介紹一下如何使用,感興趣的可以了解一下
    2021-06-06
  • 阿里云服務(wù)器部署mongodb的詳細過程

    阿里云服務(wù)器部署mongodb的詳細過程

    這篇文章主要介紹了阿里云服務(wù)器部署mongodb的過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • MongoDB入門教程(包含安裝、常用命令、相關(guān)概念、使用技巧、常見操作等)

    MongoDB入門教程(包含安裝、常用命令、相關(guān)概念、使用技巧、常見操作等)

    這篇文章主要介紹了MongoDB入門教程,包含安裝、常用命令、相關(guān)概念、使用技巧、常見操作等,是一篇比較好的入門文章,需要的朋友可以參考下
    2014-06-06
  • MongoDB快速入門及其SpringBoot實戰(zhàn)教程

    MongoDB快速入門及其SpringBoot實戰(zhàn)教程

    MongoDB是一個開源、高性能、無模式的文檔型數(shù)據(jù)庫,當初的設(shè)計就是用于簡化開發(fā)和方便擴展,是NoSQL數(shù)據(jù)庫產(chǎn)品中的一種,它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是一種類似于JSON的格式叫BSON,本文介紹MongoDB快速入門及其SpringBoot實戰(zhàn),感興趣的朋友一起看看吧
    2023-12-12
  • MongoDB添加仲裁節(jié)點報錯:replica set IDs do not match的解決方法

    MongoDB添加仲裁節(jié)點報錯:replica set IDs do not match的解決方法

    這篇文章主要給大家介紹了關(guān)于MongoDB添加仲裁節(jié)點報錯:replica set IDs do not match的解決方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 分布式文檔存儲數(shù)據(jù)庫之MongoDB訪問控制的操作方法

    分布式文檔存儲數(shù)據(jù)庫之MongoDB訪問控制的操作方法

    這篇文章主要介紹了分布式文檔存儲數(shù)據(jù)庫之MongoDB訪問控制的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • deepin 15.3 X64系統(tǒng)中安裝mongodb的方法步驟

    deepin 15.3 X64系統(tǒng)中安裝mongodb的方法步驟

    這篇文章主要跟大家分享了deepin 15.3 X64系統(tǒng)中安裝mongodb的方法步驟,文中將安裝步驟介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-04-04
  • MongoDB副本集丟失數(shù)據(jù)的測試實例教程

    MongoDB副本集丟失數(shù)據(jù)的測試實例教程

    這篇文章主要給大家介紹了關(guān)于MongoDB副本集丟失數(shù)據(jù)的測試的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • MongoDB教程之索引介紹

    MongoDB教程之索引介紹

    這篇文章主要介紹了MongoDB教程之索引介紹,本文講解了索引基礎(chǔ)、唯一索引、使用explain、索引管理等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • MongoDB Remove函數(shù)的3個常見用法

    MongoDB Remove函數(shù)的3個常見用法

    這篇文章主要介紹了MongoDB Remove函數(shù)的3個常見用法,需要的朋友可以參考下
    2014-05-05

最新評論

平谷区| 固安县| 江永县| 深水埗区| 泗阳县| 陆良县| 绥棱县| 无棣县| 江孜县| 高台县| 贵溪市| 威海市| 肇源县| 开远市| 开远市| 海南省| 乐平市| 铁岭市| 太原市| 云和县| 嘉峪关市| 宁晋县| 绍兴市| 工布江达县| 正镶白旗| 正阳县| 黄大仙区| 连南| 双辽市| 璧山县| 库尔勒市| 介休市| 高邑县| 金华市| 旺苍县| 北海市| 承德县| 无极县| 盱眙县| 宁夏| 措美县|