2016-05-16 138 views
0

我試圖找到集合中所有文檔的最小日期。我接觸過這個至今有排序功能,並採取的第一個,我覺得,在這裏看到:Mongodb/JS:找到最小(最早)日期

earliestTime = function (kitUser) { 
    'use strict'; 
    var res, earliestTime; 
    res = Cards.findOne({ kit: kitUser }, { fields: { created: 1 } }, { sort: { created: 1 } }); 
    console.log('Created date: ' + res.created); 
    earliestTime = new Date(res.created - 20000); 
    console.log('Earliest time: ' + earliestTime); 
    return earliestTime; 
}; 

我然後我找到了值減去20秒,該值返回insert一個新的文檔在創建的字段中比我以前找到的最早的字段少20秒。

modifierObject = {}; 
modifierObject.created = earliestTime(kitUser); 

功能earliestTime提供正確的結果,當我看到控制檯輸出:

I20160516-15:53:14.849(7)? Created date: Wed Apr 06 2016 12:00:11 GMT+0700 (ICT) 
I20160516-15:53:14.849(7)? Earliest time: Wed Apr 06 2016 11:59:51 GMT+0700 (ICT) 

然而,當這個函數被調用21次一對夫婦的讀/寫操作在每次調用之間,每個插入的文檔在創建的字段中都有相同的時間戳記:

{ "_id" : "xcd3EfKfS6iLGvcsP", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "bvL3f8NHHZM8Ytdma", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "gAirEbicdWJz9CELB", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "kgAg6Jt2P89mTJYgN", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "xeqR5K2fxNmgEv4bb", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "PgPimNRxj2zBuS8M2", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "snwEWeXpn4Ampsito", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "8RCS8YQLxY7tY6Ruk", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "tEqRJs49RNvCzkMz6", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "PJnZ7Z4WH6rTTw626", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "J2L6KPhzxcva3rttJ", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "YR5R6ShakPxCXgj54", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "Ajd6D8E8WrRB47q7d", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "g5CQgjbPH7NoytyMw", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "s9NgtsiR7WbjgeKLr", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "NPtZMHkAdqySShD3a", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "XxpWREjutAjbgHyME", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "6ZsiL2ZgidWjk3cgb", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "pvXiEaJgkuHEKijbB", "created" : ISODate("2016-04-06T04:59:51.183Z") } 
{ "_id" : "im4GzumrE6RARNLbe", "created" : ISODate("2016-04-06T04:59:51.183Z") } 

我很疑惑這會發生。我期待將是(時間戳)結果:

"created" : ISODate("2016-04-06T04:59:51.183Z") 
"created" : ISODate("2016-04-06T04:59:41.183Z") 
"created" : ISODate("2016-04-06T04:59:31.183Z") 
"created" : ISODate("2016-04-06T04:59:21.183Z") 

我懷疑這是有毛病我與排序功能,因此我的問題,我怎樣才能更容易找到最低MongoDB中的日期。

在此先感謝!

+0

哪裏是你的插入? –

+0

插件在稍後的階段。這是超過10000行代碼的應用程序的一部分。 – a4xrbj1

回答

1

好吧,我發現了一個錯誤在我的推算,4號線必須是:

res = Cards.findOne({ kit: kitUser }, { fields: { created: 1 }, sort: { created: 1 } }); 

我忽視了投影是一個對象,因此第一支架必須是周圍的一切選項如fieldssort

這篇文章非常有幫助的,並感謝識別馬塞爾Fahle爲指向它:

https://themeteorchef.com/snippets/mongodb-queries-and-projections/