【问题标题】:lte not working with timestamplte 不能使用时间戳
【发布时间】:2014-10-15 13:44:14
【问题描述】:

我正在尝试在日期范围内计算集合中的文档。这是我的查询:

$qb
        ->field('timestamp')->lte($dateRange['to'])
        ->field('timestamp')->gte($dateRange['from'])
        ->count()
        ->getQuery()
        ->execute();

$dateRange 的元素是DateTime 具有有效(我已经测试过)日期的对象。 Mongo 集合有我正在查询的文档。实验发现问题出在lte 方法中——当我只使用 gte 时,一切正常。还测试了range() 方法 - 它也不起作用。有什么想法吗?

由学说生成的查询如下所示:

{"count":true,"query":{"timestamp":{"$lte":{"sec":1413380708,"usec":0},"$gte":{"sec":1413380108,"usec":0}}},"limit":0,"skip":0,"db":"test","collection":"activity_log"}

【问题讨论】:

    标签: mongodb symfony doctrine-orm


    【解决方案1】:

    如果其他人有这样的问题,我会发布一个对我有用的答案。问题是我在 Timestamp 类型的 db 中有字段 timestamp,但将 \DateTime 对象传递给教义方法。因此,内部学说似乎错误地转换了类型。这是我所做的:

    $qb
            ->field('timestamp')->range(
                new \MongoTimestamp($from->getTimestamp()),
                new \MongoTimestamp($to->getTimestamp()))
    

    【讨论】:

      猜你喜欢
      • 2023-01-09
      • 2020-05-07
      • 2020-09-28
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 2020-03-09
      相关资源
      最近更新 更多