查询MongoDate与UTCDateTime

Dev*_*xon 6 php datetime mongodb

在升级到新的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())));
Run Code Online (Sandbox Code Playgroud)

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

cyr*_*iil 1

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

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