查询MongoDate与UTCDateTime

时间:2016-03-03 15:44:44

标签: php mongodb datetime

升级到新的Mongo Driver for PHP后,我面临排序和查询日期的问题。

旧驱动程序使用:http://php.net/manual/en/class.mongodate.php,它在几秒钟内将日期存储在MongoDate对象中。

新驱动程序:http://php.net/manual/en/class.mongodb-bson-utcdatetime.php以不同的格式存储日期,并以毫秒为单位存储。

已经使用$ gte或$ lte查询无效。例如:

$collection -> find(array('start_date' => array('$gte' => new MongoDate())));

$collection -> find(array('start_date' => array('$gte' => new MongoDB\BSON\UTCDateTime())));

这两个不会返回相同的结果。有了所有旧数据,我怎样才能安全地查询MongoDate和UTCDateTime?

1 个答案:

答案 0 :(得分:1)

你需要以毫秒而不是秒来传递时间,一切都会像以前一样继续工作:

$time = time();
$cursor = $collection->find(['start_date' => ['$gte' => new MongoDB\BSON\UTCDateTime($time * 1000)]]);