2016-11-30 31 views
1

當我做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,所以我不認爲這很重要。

回答

0

toISOString()函數將按定義返回一個String,如定義here

可以存儲在蒙戈Date對象,而不將其轉化:

e.dateAdded = new Date(); 
+0

我知道我可以存儲這樣的一個日期,但我不認爲它會出現與ISO的包裝,當我查詢數據庫我導入新的數據後, 。這就是我用'toISOString()'玩弄的原因。看看它是否會有所幫助。 –

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

+1

我認爲這些只適用於mongo shell。我不認爲你可以在你的Java腳本中使用它們。 – Veeram

+0

我相信這種行爲是特定於驅動程序的,您是否找到了解決方案? –