【问题标题】:Find a date in mongodb在 mongodb 中查找日期
【发布时间】:2018-08-31 17:20:18
【问题描述】:

由于我意识到我无法以字符串格式比较($gt、$gte、$lt、$lte 等)日期,因此我正在尝试学习如何使用 UTCDateTime . 而且我无法在 MongoDB\BSON\UTCDateTime 的集合中找到日期

我正在尝试使用此代码。

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);
}

我拥有的 JSON 就是这个。

"_id" : ObjectId("5ab3714bb57dce13040024c3"),
    "name" : "16floor",
    "date" : ISODate("2018-03-22T09:03:07.147Z"),
    "data" : [ 
        {
            "value" : 169
        }, 
        {
            "value" : 200
        }, 
        {
            "value" : 80
        },
        .
        .
        .

我收到了这个错误

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

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

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

【问题讨论】:

    标签: php json mongodb mongodb-query


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2014-12-15
      • 1970-01-01
      • 2017-10-10
      相关资源
      最近更新 更多