【问题标题】:MongoDate comparision for date only仅日期的 MongoDb 日期比较
【发布时间】:2013-11-13 06:12:01
【问题描述】:

大家好,我是 mongodb 的新手,在比较收藏中的日期时遇到了一些问题。我有一个带有 dateCreated 字段的事件集合,将 new MongoDate() 存储为

"dateCreated": ISODate("2013-11-13T05: 23: 45.0Z") 

现在我想要今天创建的活动之一。为此,我尝试在 yii 框架中使用查询作为

$db->event->findOne(array('dateCreated' => new MongoDate()));

但它返回 null ,我猜这是由于无法比较存储在 dateCreated 中的时间值。那么任何人都可以建议如何只比较日期而不是时间与 MongoDate()。

提前致谢。

【问题讨论】:

    标签: php mongodb yii


    【解决方案1】:

    要查询今天创建的内容,您需要使用 Mongo $gt$lt 运算符在 PHP 中的“today”范围内搜索 dateCreated 键:

    $db->event->findOne(array('dateCreated' => array('$gt' => new MongoDate(strtotime("midnight")), '$lt' => new MongoDate(strtotime("11:59PM")))));
    

    【讨论】:

    • 谢谢,它对我有用。上述查询中也缺少一个括号。您可以像下面这样编辑它 $db->e​​vent->findOne(array('dateCreated' => array('$gt' => new MongoDate(strtotime("midnight")), '$lt' => new MongoDate (strtotime("11:59PM")))));
    【解决方案2】:

    这将返回 null,因为您正在搜索刚刚创建的集合。

    你也找range queries with date.

    所以你需要像这样修改它:

    $db->event->findOne(
      array('dateCreated' => array(
        '$gte' => timestamp of the current day
      ))
    );
    

    据我了解,您可以通过这种方式找到当天的时间戳:

    mktime(0, 0, 0, date('n'), date('j')); 
    

    但我可能在这方面错了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      相关资源
      最近更新 更多