MongoDate比较仅适用于日期

时间:2013-11-13 06:12:01

标签: php mongodb yii

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

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

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

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

但它返回null,我猜是因为没有比较dateCreated中存储的时间值。所以任何人都可以建议如何仅将日期与时间与MongoDate()进行比较。

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

这将返回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')); 

但我可能在这方面错了。