大家好,我是 mongodb 的新手,在比较我收藏中的日期时遇到了一些问题。我有一个事件集合,其中 dateCreated 字段将新的 MongoDate() 存储为
"dateCreated": ISODate("2013-11-13T05: 23: 45.0Z")
现在,我想要今天创建的事件之一。为此,我尝试在 yii 框架中使用查询作为
$db->event->findOne(array('dateCreated' => new MongoDate()));
但它返回 null,我猜这是由于无法比较存储在 dateCreate 中的时间值。所以任何人都可以建议如何仅比较日期而不是时间与 MongoDate()。
提前谢谢。
要查询今天创建的内容,您需要使用 Mongo $gt
和 $lt
运算符在 PHP 中搜索 "today" 范围内的 dateCreated 键:
$db->event->findOne(array('dateCreated' => array('$gt' => new MongoDate(strtotime("midnight")), '$lt' => new MongoDate(strtotime("11:59PM")))));
这将返回 null,因为您正在搜索刚刚创建的集合。
您也在寻找带有日期的范围查询。
所以你需要像这样修改它:
$db->event->findOne(
array('dateCreated' => array(
'$gte' => timestamp of the current day
))
);
据我了解,您可以通过以下方式找到当天的时间戳:
mktime(0, 0, 0, date('n'), date('j'));
但我可能在这一部分错了。