我的MongoDB数据库中有这种格式的日期。
{
"_id": ObjectId("5682e899f326d45c821d8b9b"),
"City": "Atlanta",
"Date": "12/5/02",
"Temp": 78.5,
}
我想将此转换为ISO日期,以便我可以在数据库中对日期进行排序。使用PyMongo或JavaScript的更新命令执行此操作的最佳方法是什么。
答案 0 :(得分:1)
你有两个问题。首先,您的日期格式不明确。您给出的示例日期将具有不同的值,具体取决于用于将其解析为日期的系统的区域设置。在美国它是(我认为)2002年12月5日。虽然它将在2002年5月12日解析大西洋一侧。欢乐时光。
假设您知道每个日期的意图格式,那么在节点中您可以使用moment.js将每个日期解析为固定格式,例如
let date = moment(document.Date, "D/M/YY");
然后使用
输出为ISO日期document.Date = date.toISOString();
或者如果你是好人,并且非破坏性地做这件事
document.ISODate = date.toISOString();
虽然现在你有两个约会日期......
答案 1 :(得分:0)
您将需要迭代整个结果集,并单独更新每个文档:
var f = function(e) {
var arr = e['Date'].split("/");
//assuming "Date" field was formatted as "YY/MM/DD"
var date_obj = new Date(arr[0], arr[1], arr[2]);
db.your_collection.update({_id: e['_id']}, {$set: {date_obj: date_obj}});
}
db.your_collection.find().forEach(f)
如果要删除旧字段,可以运行以下命令:
db.your_collection.update({}, {$unset: {Date: 1}}, {multi:true});
但是,在确定日期转换正确之前,请不要这样做。
答案 2 :(得分:-1)
我认为,您应首先检索记录并使用循环来更改所有记录。然后你应该解析数据以构造一个Date
对象来转换为mongo date。
var value = "12/5/02";
var parts = value.split("/");
var dt = new Date("20"+parts[2], parseInt(parts[1])-1, parts[0]);
如果您使用的是nodejs,请同时检查this。
编辑:我假设12 =天,5 =月。