Хранение и получение дат в Mongodb 3.2 с помощью PHPLIB

Используя Mongo и PHP, как хранить тип datetime, а затем извлекать по дате?

Это то, что у меня есть для вставки, но оно хранит дату в виде строки:

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

Как я должен отправлять дату в Mongo для хранения в качестве типа datetime, чтобы я мог делать правильные поиски?

1

Решение

Поместите экземпляр этого класса в массив: http://php.net/manual/en/class.mongodb-bson-utcdatetime.php

Вам необходимо использовать объекты BSON в массивах PHP: http://php.net/manual/en/book.bson.php

Те, которые сериализованы должным образом, прежде чем передать Монго.

$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");
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]