亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

MongoDB批量將時間戳轉為通用日期格式示例代碼

2020-03-14 12:50:08
字體:
來源:轉載
供稿:網友

前言

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

1,官網提供的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包含某個關鍵字測試'

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

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

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

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

建立遍歷函數:

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的脹數據

刪除查詢出來的集合數據

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

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

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

刪除paymentTime=0的數據記錄

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)}  批量修改校驗錯誤日期數據的期待解決的問題

 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結構的日期格式數

5,找到突破口,使用JAVASCRIPT

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

db.paymentinfo.find({"_id":ObjectId("55d56cbbe4b0c1f89b5356a4")}).forEach(function (a) {  #這個函數是在月、日、時分秒的個位數字前面補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());  # 組裝成標準的日期格式yyyy-mm-dd hh:mm:ss  var datastr=year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second;  a["paymentTime"]=datastr print(paymentTime);  printjson(a) } );

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

 db.paymentinfo.update({"_id": ObjectId("55d56fdbe4b0c1f89b5356ae")},{$set:{"paymentTime" : "14400511608049527"}},true); # 使用遍歷數組的方式來操作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}); } # 使用遍歷數組的方式來操作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,碰到新的問題,統一日期格式,將斜杠變成橫杠

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

 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 datainsert into t1 select 1,'a' from db1.t2;call db1.proc_get_fints

OK,到此圓滿解決

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久免费高清电视剧观看| 亚洲美女在线观看| 欧美精品激情blacked18| 亚洲欧美制服第一页| 国产午夜精品免费一区二区三区| 国产专区欧美专区| 欧美洲成人男女午夜视频| 精品久久在线播放| 91精品国产高清久久久久久久久| 亚洲无限av看| 国内精品久久久久久久| 成人高清视频观看www| 亚洲一区二区免费在线| 国产成人久久久精品一区| 亚洲国产精品字幕| 欧美日本黄视频| 一区二区在线视频| 日本最新高清不卡中文字幕| 成人久久久久爱| 国产精品情侣自拍| 久久精品视频一| 久久亚洲成人精品| 欧美香蕉大胸在线视频观看| 在线看国产精品| 中文字幕欧美在线| 日韩精品极品视频免费观看| 国产成人一区二区三区电影| 日本精品一区二区三区在线播放视频| 日韩欧美在线免费| 91精品国产高清久久久久久| 色偷偷亚洲男人天堂| 欧美乱人伦中文字幕在线| 久久精品视频播放| 欧美性受xxxx白人性爽| 日韩在线视频中文字幕| 国产91精品久| 国产丝袜一区二区三区| 久久天天躁狠狠躁老女人| 亚洲日韩中文字幕在线播放| xvideos国产精品| 国产日韩在线精品av| 国产精品爽黄69| 久久久999国产| 日韩av大片在线| 91久久中文字幕| 91免费在线视频| 亚洲精品suv精品一区二区| 日韩av毛片网| 亚洲成人激情视频| 日韩中文字幕久久| 欧美一级淫片播放口| 91视频8mav| 精品久久香蕉国产线看观看亚洲| 亚洲日韩中文字幕| 51视频国产精品一区二区| 欧美精品www在线观看| 亚洲美女动态图120秒| 国产精品久久久久久搜索| 欧美成人在线免费视频| 亚洲视频国产视频| 亚洲性生活视频在线观看| 91在线色戒在线| 成人免费网站在线| 国产欧美日韩精品专区| 91亚洲精品久久久| 亚洲区在线播放| 欧美中文字幕在线播放| 欧美精品在线免费播放| 日韩在线视频国产| 久久精品色欧美aⅴ一区二区| 久久久爽爽爽美女图片| 日韩久久免费电影| 亚洲综合精品伊人久久| 亚洲自拍偷拍福利| 中文字幕综合一区| 久久久久北条麻妃免费看| 91高潮在线观看| 4438全国成人免费| 日韩经典第一页| 亚洲精品一区二区三区不| 亚洲第一av在线| 另类视频在线观看| 国产suv精品一区二区| 亚洲欧美国产精品va在线观看| 欧美日韩激情视频| 亚洲夜晚福利在线观看| 欧美精品免费在线观看| 久久不射电影网| 久久夜精品va视频免费观看| 2019中文字幕在线| 国产在线98福利播放视频| 国产在线精品一区免费香蕉| 欧美激情高清视频| 欧美在线xxx| 精品久久久久久久久久久久| 日本欧美在线视频| 国产69久久精品成人看| 日韩黄色在线免费观看| 最近日韩中文字幕中文| 欧美黑人xxxx| 欧洲亚洲在线视频| 日韩成人中文电影| 欧美激情亚洲另类| 麻豆乱码国产一区二区三区| 中文字幕精品一区久久久久| 青青在线视频一区二区三区| 欧美性xxxx极品hd满灌| 中国china体内裑精亚洲片| 国产精品91一区| 亚洲欧美成人网| 日本精品久久中文字幕佐佐木| 日韩一区二区三区xxxx| 久久久久久久香蕉网| 欧美国产在线视频| 亚洲人成绝费网站色www| 国产精品最新在线观看| 日韩中文字幕在线免费观看| 欧美性猛交xxxx偷拍洗澡| 精品久久久久久久久中文字幕| 日韩免费在线电影| 动漫精品一区二区| 亚洲电影免费在线观看| 国产精品wwwwww| 97在线免费视频| 中文字幕日韩欧美在线| 亚洲已满18点击进入在线看片| 超碰精品一区二区三区乱码| 久久精品国产精品亚洲| 成人在线中文字幕| 久久久精品国产网站| 久久人人看视频| 欧美精品videos另类日本| 国产欧美日韩高清| 美女精品久久久| 国产福利成人在线| 欧美一区二区.| 欧美有码在线观看| 亚洲午夜精品久久久久久久久久久久| 亚洲精品国偷自产在线99热| 日韩精品免费在线视频| 深夜福利一区二区| 久久久亚洲福利精品午夜| 欧美电影《睫毛膏》| 中文字幕亚洲图片| 国产视频福利一区| 亚洲国产精品电影在线观看| 日韩综合视频在线观看| 欧美精品videosex牲欧美| 高清在线视频日韩欧美| 国产欧美精品在线播放| 欧美极品少妇xxxxⅹ免费视频| 国产亚洲欧洲高清一区| 情事1991在线| 亚洲欧美综合精品久久成人| 97**国产露脸精品国产| 欧美一区三区三区高中清蜜桃| 精品国产网站地址| 成人在线视频网| 日韩国产一区三区| 欧洲精品在线视频| 国产精品久久久999| 精品国产成人av| 国内精品久久久久| www.亚洲男人天堂|