2014-12-19 535 views
3

我有我的ISODate在mongo作为ISODate,我想只是在具有特定日期时间格式的字符串格式。如何将mongodb ISODate转换为mongoDB中的字符串?

这里是ISODate:

ISODate("2020-04-24T11:41:47.280Z") 

预期结果:

"2020-04-24T11:41:47.280Z" 

我想这是对的MongoDB只能作为我的很多服务都期待这种格式发生了,我不不想将所有服务中的变化作为一项繁琐的工作。

+0

你从'mongo'壳这样做,或特定的驱动程序? 'ISODate()'只是一个围绕标准JavaScript'Date'对象的便捷包装,因此您可以:'ISODate(“2020-04-24T11:41:47.280Z”)。toISOString()'。如果你使用JavaScript,我会建议[moment.js](http://momentjs.com/)更高级的格式。 – Stennie 2014-12-19 06:07:50

+0

您是否在寻求将ISODate中的所有数据转换为字符串的方法。或者在mongodb中保存它作为日期,并在后端请求时将其解析为字符串。 – 2014-12-19 06:10:07

+0

我正在mongo中运行一个更新脚本来将字符串日期转换为ISODate,这里是我正在运行db.events.find()。forEach(function(element){if(element.t && typeof element。 t ===“string”){ element.t = ISODate(element.t); }})这里element.t将是“2020-04-24T11:41:47.280Z”。运行此脚本后,它将转换为ISODate(“2020-04-24T11:41:47.280Z”)。现在我想把它转换回mongo中相同的格式“2020-04-24T11:41:47.280Z”。我不能在mongodb中使用时刻。 – Manu 2014-12-19 06:19:42

回答

9

我在尝试以下时获得了预期的结果。

ISODate("2020-04-24T11:41:47.280Z").toJSON() 

这会给我后面的字符串

"2020-04-24T11:41:47.280Z" 
+0

厌倦了寻找它,谢谢 – mulya 2015-12-03 15:11:59

1

也许只是转换成日期字符串?这与mongo比js少。时刻很棒但在mongo shell脚本中无法使用。

db.events.find().forEach(function(doc) {  
    // printjson ("Document is " + doc);  
    var isoDate = doc.t; // t is correct key?  
    var isoString = isoDate.toISOString()  
    // update the collection with string using a new key  
    db.events.update({"_id":doc._id},{$set:{"iso_str":isoString}); 
    // or overwrite using 't' key  db.events.update({"_id":doc._id},{$set:{"t":isoString}); 
}) 
0

我刚刚遇到了这个问题。 ISODate没有内置任何东西。所以我将ISODate转换成JSON文本,然后我做了一个子字符串来获得我想要的部分。您也可以使用ISODate上的方法分别获取年份,月份,日期,然后将它们合并。

function formatDate(isoDate){ 
    return isoDate.toJSON().substr(9, 20); 
} 
相关问题