2012-07-15 51 views
0

我有許多文檔包含名爲「date」的字段,它只是一個unix時間戳。鋰電池,我想查找給定日期範圍內的所有文件。我目前正在嘗試以下操作:Lithium&MongoDB:按日期範圍查找文檔

//$_stats contains two \DateTime objects which are properly initialized 

$transactions = Transactions::all(
    array('conditions' => array(
       'tags' => array('$all' => array((string)$tag->_id)), 
       'date' => array('$gte' => array((int)$_stats['date_start']->getTimestamp()), '$lte' => array((int)$_stats['date_end']->getTimestamp())) 
)) 
); 

但是這會返回零個文檔。當我刪除「日期」條件,它工作正常,我得到的所有文件。

我錯過了什麼?

感謝,aenogym

回答

1

似乎沒有被任何需要給予日期的陣列,所以也許嘗試:

$transactions = Transactions::all(
    array('conditions' => array(
      'tags' => array('$all' => array((string)$tag->_id)), 
      'date' => array('$gte' => (int)$_stats['date_start']->getTimestamp(), '$lte' => (int)$_stats['date_end']->getTimestamp()) 
)) 
); 

記住MongoDate保存日期,毫秒,而戳使用秒。換句話說,MongoDate具有更高的精度。

+0

謝謝Marcin!這就是訣竅:) – aeno 2012-07-16 05:52:55