for (var i = 0, len = 3; i < len; i++) {var child=dschilds; var>
批量改动校验错误日期数据的期待解决的问题
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;
var> printjson(id);
var paymentTime=child.paymentTime;
var datestr=paymentTime
#问题在这里,这个日期是时间戳,比方1440560826340的模式。请问下。在mongodb shell里面怎样将时间戳变成字符串'2015-12-15 12:34:16'这种日期字符串呢?
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;
var> 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;
# 这里開始进行改动操作
# 使用遍历数组的方式来操作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;
var> 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;
var ds= db.paymentinfo.find({"paymentTime": {$regex: '/', $options:'i'}}); var dschilds=ds.toArray();
for (var i = 0;i <dschilds.length; i++) {
var child=dschilds;
var> var paymentTime=child.paymentTime;
var paymentTime2=paymentTime.replace(/\//g,"-");