升级到新的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?
答案 0 :(得分:1)
你需要以毫秒而不是秒来传递时间,一切都会像以前一样继续工作:
$time = time();
$cursor = $collection->find(['start_date' => ['$gte' => new MongoDB\BSON\UTCDateTime($time * 1000)]]);