蒙戈将ISO日期转换为奇怪的字符串
Mongo converting ISO date into weird string
我转换了这个日期格式
"日期" : "2016-02-22 13:52:23"
使用此代码
db.gmastats.find({date: {$not: {$type: 9}}}).forEach(function(doc) {doc.date = new Date(doc.date); db.gmastats.save(doc);})
蒙戈给了我这个:
ISODate("-292275055-05-16T16:47:03.192Z")
我该怎么做才能把它变成一个真正的约会?
日期字符串无效,但只需少量转换即可。基本上,您只需要在"日期"部分和"时间"部分之间"T"
,然后new Date()
就可以解决了。
db.gmastats.find({ "date": { "$type": 2 } }).forEach(function(doc) {
doc.date = new Date(doc.date.split(" ").join("T"));
db.gmastats.save(doc);
})
还要注意的是,只寻找不是BSON日期的东西是不安全的。当您对"字符串"进行操作时,您应该只查看"字符串"数据。
但实际上,您"应该"使用"批量"操作执行此操作:
var ops = [];
db.gmastats.find({ "date": { "$type": 2 } }).forEach(function(doc) {
ops.push({ "updateOne": {
"filter": { "_id": doc._id },
"update": { "$set": { "date": new Date(doc.date.split(" ").join("T")) } }
}});
if ( ops.length == 1000 ) {
db.gmastats.bulk_write(ops);
ops = []
}
})
if ( ops.length > 0 ) {
db.gmastats.bulk_write(ops);
}
这将更快,并且安全地"仅"更新数据的"date"
属性,而不会影响其他并发写入操作。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 将字符串转换为格式化日期
- IE在将字符串转换为日期时从日期中删除4小时
- node.js将字符串转换为要上传到Web服务器的文件
- 将字符串转换为JS对象
- 在js中将字符串转换为十六进制
- 试图了解如何使用parseFloat将字符串转换为数字
- 如何在html中将字符串转换为数字?以及如何将变量传递到scriptlet代码中
- 将字符串转换为GWT中的JSON对象(JSNI)
- 如何使用Razor显示模板将字符串转换为html字符串
- 将字符串转换为数组编号Javascript
- js字符串转换为具有两个值的对象
- 转换<a>使用jQuery将文本字符串转换为dom元素
- Jquery-将字符串转换为reg exp对象
- 使用JavaScript将客户端日期/时间字符串转换为JSON日期/时间串
- 将JavaScript字符串转换为整数
- moment js,将EST字符串转换为UTC
- 如何在javascript中将字符串转换为有效日期
- 通过JQuery将字符串转换为JSON