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的模糊查询

    本帖下載内容已隐藏,请登入以查看隐藏内容!
    脚本,这么说来,直接在窗口里面写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 data
    insert into t1 select 1,'a' from db1.t2;
    call db1.proc_get_fints
    

    OK,到此圆满解决


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待