使日期ISO包装

问题描述:

当我做dateAdded : new Date().toISOString()在js文件中创建JSON文件的数据导入到mongo它在mongo shell中显示为2016-11-26T21:51:23.879Z。我希望它看起来像ISODate("2016-11-26T21:51:23.879Z")使日期ISO包装

我不得不做下面的事情来改变它到我通常看到的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包装,对吗?

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

例如,如果我刚刚导入了300个文档,并且我已经在那里有1000个,我希望能够通过开始1001的日期进行查询。我想按日期查询,但如果它具有ISOwrapper和我不想按类别查询。

我有这样的猫鼬纲要dateAdded : {type : Date, default : Date.now},我最近一直在使用mongoimport,所以我不认为这很重要。

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

可以存储在蒙戈Date对象,而不将其转化:

e.dateAdded = new Date(); 
+0

我知道我可以存储这样的一个日期,但我不认为它会出现与ISO的包装,当我查询数据库我导入新的数据后, 。这就是我用'toISOString()'玩弄的原因。看看它是否会有所帮助。 –

当我们使用日期(),则返回日期字符串,但是返回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

+1

我认为这些只适用于mongo shell。我不认为你可以在你的Java脚本中使用它们。 – Veeram

+0

我相信这种行为是特定于驱动程序的,您是否找到了解决方案? –