前言
時間戳(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了,然后準備拿一條數據來驗證是否正確,結果成功了,驗證腳本如下: 主站蜘蛛池模板: 久久久久久91 | 91精品国产综合久久香蕉922 | 色噜噜视频在线观看 | 日本免费精品 | 一本大道久久a久久精二百 精品一区二区三区免费毛片爱 | 欧美成人久久久免费播放 | 日韩午夜在线观看 | 久久久成人网 | 久久精品播放 | jvid美女成人福利视频 | 亚洲欧美日韩另类精品一区二区三区 | 久久精品久久精品 | 亚洲国产精品精华液com | 天天艹视频| 久久久中文字幕 | 日韩1区3区4区第一页 | a在线观看免费视频 | 特级理论片 | 国产精品久久久久久久久 | 日韩成人在线播放 | 得得啪在线视频 | 日韩高清国产一区在线 | 国产91黄色| 色欧美片视频在线观看 | 国产精品亚洲一区 | 亚洲天堂av网 | 成人在线视频免费 | 亚洲情欲网 | 中文字幕亚洲欧美日韩在线不卡 | 国产精品一区二区三区视频网站 | 99reav| 亚洲乱码一区二区 | 99久久久国产精品 | 日本视频三区 | 精品在线免费视频 | 中文字幕一区二区三区四区 | 成人教育av | 一区中文字幕 | 狠狠做深爱婷婷综合一区 | 日韩电影一区二区三区 | 久久99国产精品久久99大师 |