将日期设为ISO包装器

时间:2016-11-30 18:11:58

标签: javascript node.js mongodb date mongoose

当我在js文件中执行dateAdded : new Date().toISOString()创建要导入到mongo的数据的JSON文件时,它在mongo shell中显示为2016-11-26T21:51:23.879Z。我希望它看起来像ISODate("2016-11-26T21:51:23.879Z")

我必须执行以下操作,将其更改为我常见的ISO包装器。

Comps.find({category : "Consumer Electronics"})
    .then(function(comps){
        console.log(comps.length)
        comps.forEach(function(e){
            console.log(e.name)
            e.dateAdded = new Date(e.dateAdded.toString());
            // e.category = "Auctions";
            e.save(function(error, doc){
                if(error) console.log(error);
                console.log("doc saved : " , doc.name, " ", doc.category, " " , doc.dateAdded);
            })
        })
    })

`

我可以在JS文件中做些什么来使用ISO包装器立即在mongo中显示日期吗?

在我的代码上方Consumer Electronics的查询,但似乎我想按日期查询。

例如,如果我刚刚导入了300个文档并且我已经有1000个已经存在,那么我希望能够按照开始1001的日期进行查询。我想按日期查询但是如果它有ISOwrapper而我会感觉更好不想按类别查询。

我在mongoose Schema中有这个dateAdded : {type : Date, default : Date.now},我最近一直在使用mongoimport所以我认为这甚至不重要。

2 个答案:

答案 0 :(得分:0)

toISOString()函数将按定义返回一个String,定义为here

您可以在不改变它的情况下将Date对象存储在mongo中:

 e.dateAdded = new Date();

答案 1 :(得分:0)

当我们使用日期()时,它会将日期返回为字符串,但是要返回 ISODate 对象,您可以使用以下重载日期格式。

new Date("<YYYY-mm-dd>") which returns the ISODate with the specified date.
new Date("<YYYY-mm-ddTHH:MM:ss>") which specifies the datetime in local datetime and returns the ISODate with the specified datetime in UTC.
new Date("<YYYY-mm-ddTHH:MM:ssZ>") which specifies the datetime in UTC and returns the ISODate with the specified datetime in UTC.

有关详细信息,请查看mongod-Date