在mongodb中查找日期

时间:2018-03-22 10:08:57

标签: php json mongodb mongodb-query

由于我已经意识到我无法比较($ gt,$ gte,$ lt,$ lte等)字符串格式的日期,我正在尝试学习如何使用 UTCDateTime 。 而且我无法在MongoDB \ BSON \ UTCDateTime

的集合中找到日期

我正在尝试使用此代码。

plt

我拥有的JSON就是这个。

require '../vendor/autoload.php';
$client = new MongoDB\client("mongodb://localhost:27017");
$database = $client->db;
$center = $database->collection;

$document = $center->find(array("date" => new MongoDB\BSON\UTCDateTime("2018-03-22T09:03:07.147Z")));
foreach ($document as $doc){
        var_dump($doc);
}

我收到此错误

  

致命错误:未捕获   MongoDB \ Driver \ Exception \ InvalidArgumentException:解析时出错   “2018-03-22T09:03:07.147Z”为64位整数   MongoDB \ BSON \ UTCDateTime初始化

如何使用MongoDB \ BSON \ UTCDateTime在集合中查找日期?

据我所知,我也可以找到带时间戳的日期,但我正在寻找一个带 UTCDateTime 字段的搜索。

1 个答案:

答案 0 :(得分:1)

根据UTCDateTime::__construct文档字符串作为参数应包含自Unix纪元以来的毫秒数(并且它仅用于与32位系统兼容)。要使代码生效,您需要传递\DateTimeInterface的实例:

new MongoDB\BSON\UTCDateTime(new \DateTimeImmutable("2018-03-22T09:03:07.147Z"))