2013-03-26 124 views
2

我有存儲在mongodb數據庫中的時間序列數據,其中一個字段是ISODate對象。我試圖檢索ISODate對象的分數和秒數爲零的所有項目。也就是說,所有在一個小時內都有時間戳的對象。在mongodb查詢中日期/時間/分鐘

有沒有什麼辦法做到這一點,或者我需要創建單獨的字段小時,分鐘,第二,並通過直接查詢他們,例如,查找({「分鐘」:0,「第二」: 0})?

謝謝!

回答

5

你可以這樣做,因爲@Devesh說datetime列,或者如果它更貼近您可以使用聚合框架:

db.col.aggregate([ 
    {$project: {_id:1, date: {mins: {$minute: '$dateField'}, secs: {$second: '$dateField'}}}}, 
    {$match: {mins: 0, secs: 0}} 
]); 

像現在這樣。

+0

謝謝。這實際上是我正在尋找的,但Devesh的答案可能會導致更好的性能,因爲我將運行大量的查詢與這些約束。 – user1094206 2013-03-26 14:07:52

+0

@ user1094206事實上,預集合到另一個字段,有選擇性地仔細會產生更快和更具可擴展性的結果,但是我不會使用日期時間列,因爲MongoDB中只有日期列沒有這樣的事情,相反,您會安置對象的部分形成一個日期,即:'日期:{小時:1,分鐘:0,秒:0}' – Sammaye 2013-03-26 14:11:24

1

您是否可以在集合中添加一列,其中只包含不含分鐘和秒的日期時間。它會使您的查詢更快,更易於使用。這將是沒有分秒部分

+0

這似乎是一個好主意。除非有一種方法可以基於min/sec直接過濾,否則我會繼續。 – user1094206 2013-03-26 14:01:29