锂和锂MongoDB:按日期范围查找文档

时间:2012-07-15 11:34:51

标签: php mongodb timestamp conditional-statements lithium

我有许多文档,其中包含一个名为“date”的字段,它只是一个unix时间戳。 在锂,我想找到给定日期范围内的所有文件。我目前正在尝试以下方法:

//$_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 个答案:

答案 0 :(得分: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具有更高的精度。