使用Mongo和PHP如何存储日期时间类型,然后按日期检索?
这是我插入的内容,但它将日期存储为字符串:
$collection->insertOne(['date_created' => '2017-01-02 17:20:15']);
我应该如何将日期发送给Mongo存储为日期时间类型,以便我可以做正确的查找?
答案 0 :(得分:1)
将此类的实例放入数组: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()返回自unix纪元以来经过的秒数。请参阅:http://php.net/manual/en/mongodb-bson-utcdatetime.construct.php
更新: 要以ISO格式检索日期/时间,只需将UTCDateTime对象拳头转换为DateTime:
$date_created = $test["date_created"];
$iso_date = $date_created->toDateTime()->format("Y-m-d H:i:s");