2014-12-19 131 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); 
} 
相關問題