0

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

//$_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()))
  ))
);

但这会返回零个文档。当我删除“日期”条件时,它工作正常并且我得到所有文件。

我错过了什么?

谢谢,艾诺健

4

1 回答 1

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 具有更高的精度。

于 2012-07-15T12:19:53.087 回答