使用 PHPLIB 在 Mongodb 3.2 中存储和检索日期

Storing and retrieving dates in Mongodb 3.2 with PHPLIB

使用 Mongo 和 PHP 如何存储日期时间类型,然后按日期检索?

这是我要插入的内容,但它将日期存储为字符串:

$collection->insertOne(['date_created' => '2017-01-02 17:20:15']);

我应该如何将日期发送到 Mongo 以存储为日期时间类型以便我可以进行正确的查找?

将此 class 的实例放入数组中:http://php.net/manual/en/class.mongodb-bson-utcdatetime.php

您需要使用 PHP 数组中的 BSON 对象:http://php.net/manual/en/book.bson.php

那些在传递给 Mongo 之前被正确序列化。

$test = array(  
    "_id" => 123, 
    "name" => "This is an example", 
    "date_created" => new MongoDB\BSON\UTCDateTime(time() * 1000)
);

$collection->insert($test);

time() 乘以 1000,因为构造函数想要自 unix 纪元以来经过的毫秒数,而 time() returns 是自 unix 纪元以来经过的秒数。参见:http://php.net/manual/en/mongodb-bson-utcdatetime.construct.php

更新: 要以 ISO 格式检索 date/time,只需将 UTCDateTime 对象拳头转换为 DateTime:

$date_created = $test["date_created"];
$iso_date = $date_created->toDateTime()->format("Y-m-d H:i:s");