在升级到PHP的新Mongo驱动程序后,我面临着排序和查询日期的问题。
旧的驱动程序使用的是:在MongoDate对象中以秒为单位存储日期的http://php.net/manual/en/class.mongodate.php。
新的驱动程序: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进行查询呢?
发布于 2017-11-23 15:40:28
你需要以毫秒为单位传递时间,而不是以秒为单位,一切都会像以前一样工作:
$time = time();
$cursor = $collection->find(['start_date' => ['$gte' => new MongoDB\BSON\UTCDateTime($time * 1000)]]);https://stackoverflow.com/questions/35776643
复制相似问题