如何使用PHP查询MongoDB日期

3
我需要将这个PHP查询转换为MongoDB查询。
$query = "select * from table where data_added like '%data%';

我有一个存储在变量中的日期

$date = "2013-09-02";

在我的Mongo文档中,日期排序如下:
$dateAdded = new MongoDate(strtotime('2013-09-02 12:21:55'));

我尝试过

$date = new MongoDate(strtotime("$date"));

$mongo->find(array('date_added'=>array('$lt'=>$date)));

and 
$mongo->find(array('date_added'=>$date));

但是一直没有成功。

所以我需要使用(Y-m-d)而不是(Y-m-d h:i:s)来查询数据,那么如何在Mongo中使用LIKE查询呢?

谢谢。


如何看待 $dateAdded = new MongoDate(date('Y-m-d',strtotime('2013-09-02 12:21:55'))); - Amal Murali
谢谢,但我需要 $dateAdded = new MongoDate(date('Y-m-d',strtotime('2013-09-02'))); - Osama Jetawe
它已经是 Y-m-d 格式了。我不确定你想做什么。 - Amal Murali
但是它包含 (h:i:s),我需要去掉 (h:i:s)。 - Osama Jetawe
再看一下我的第一条评论。我不确定是否有更好的方法来做这件事(使用MongoDate),但是该行首先将您的日期字符串转换为Unix时间戳,然后使用date()将其格式化为Y-m-d格式。 - Amal Murali
1
MongoDB中的数据类型是什么?您可能需要进行范围查询,从2013-09-22 00:00:002013-09-22 23:59:59 - WiredPrairie
1个回答

2
你需要执行一个范围查询。创建一个时间戳,例如使用strtotime()函数,在一天的开始获取Unix时间戳,再创建另一个时间戳在一天的结束。
根据你想要这两个端点是包含还是不包含,然后使用相应的方式。
// Both points/seconds inclusive
->find(array("date" => array('$gte' => $startOfDay, '$lte' => $endOfDay)));
// Both seconds exclusive
->find(array("date" => array('$gt' => $startOfDay, '$lt' => $endOfDay)));

请参见http://cookbook.mongodb.org/patterns/date_range/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接