如何在mongoDB中将mongoDB ISODate转换为字符串?

zaq34kh6  于 2023-11-17  发布在  Go
关注(0)|答案(7)|浏览(174)

我有我的ISODate在mongo作为ISODate,我想只是在字符串格式与特定的日期时间格式。
以下是ISODate:

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

字符串
预期结果:

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


我希望这在mongodb上发生,因为我的许多服务都期望这种格式,我不想在所有服务中进行更改,因为这是一项乏味的工作。

gg58donl

gg58donl1#

我得到了预期的结果,而我正在尝试以下。

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

字符串
这会把绳子还给我给予

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

9lowa7mx

9lowa7mx2#

也许只是简单地将日期转换为字符串?这与mongo的关系比js.moment更小。moment很棒,但在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}});
})

字符串

8xiog9wr

8xiog9wr3#

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

function formatDate(isoDate){
    return isoDate.toJSON().substr(9, 20);
}

字符串

jgzswidk

jgzswidk5#

如果你在一个属性中混合了数据类型[string & ISODate()],并且仍然想将它们规范化为一种数据类型,例如'string',那么

typeof attr_val === 'string' ?  attr_val : attr_val.toJSON()

字符串

参考资料

4ktjp1zp

4ktjp1zp6#

db.inventries.find().forEach(function (doc) {
    let mydate = new Date(doc.date).toISOString(); 
    db.inventries.update({ "_id": doc._id }, { $set: { "date": ISODate(mydate) } })
})

字符串

zrfyljdw

zrfyljdw7#

我遇到了这个问题,因为我想要这个特定的格式YYYY-MM-DD HH:MM:SS,我只是使用String构造函数方法来获得一个包含所有组件的字符串。
例如,对于存储在某个文档的datetime字段中的日期2023-11-15 08:55:05.426Z,如果我调用:

String(doc.datetime)

字符串
我明白了:

Wed Nov 15 2023 08:55:05 GMT+0200 (EET)


所以我写了一个自定义函数来按照我想要的方式重新格式化这个字符串。
下面是最后一个函数:

function dateToString(date) {
    var monthMapper = {
        Jan: 1,
        Feb: 2,
        Mar: 3,
        Apr: 4,
        May: 5,
        Jun: 6,
        Jul: 7,
        Aug: 8,
        Sep: 9,
        Oct: 10,
        Nov: 11,
        Dec: 12
    };

    var dateComponents = date.split(' ');
    var month = dateComponents[1];
    var day = dateComponents[2];
    var year = dateComponents[3];
    var time = dateComponents[4];

    return year + '-' + monthMapper[month] + '-' + day + ' ' + time;
}


因此,使用String构造函数,您可以获得一个易于操作的字符串。

相关问题