使用PHP进行MongoDB ISODate查询

时间:2016-07-25 08:51:28

标签: php mongodb isodate mongodate

我正在尝试根据日期从mongo集合中检索数据,我想获取日期大于或等于当天日期(即数据字段下的日期)的数据。但是我似乎无法理解为什么我的查询没有返回任何内容(空mongo对象)。以下是我的代码:

数组结构/内容:

{ 
"_id" : ObjectId("990093409187049704809d"), 
"type" : "number 1 champion", 
"entryDate" : ISODate("2016-05-12T10:55:55.000+0000"), 
"requester" : {
    "cn" : "Torgue", 
    "username" : "tg"
}, 
"data" : {
    "office" : "Badass Crater of Badassitude",  
    "name" : {
        "firstname" : "Salvador", 
        "middlename" : "A", 
        "surname" : "Gunzerker"
    }, 
    "date" : ISODate("2016-05-23T23:00:00.000+0000"), 
}, 
"index" : "1"
}

PHP查询:

$today =  date(DATE_ISO8601, (new MongoDate())->sec);
$str = $col1->find(array('type' => 'number 1 champion', 'data.date'=>array ('gte'=>$today))); 
print_r($str);

任何人都可以指出我正确的方向或向我解释如何做正确的输出。

对于遇到相同问题的任何人,以下是解决方案:

$query = array('type' => 'number 1 champion', 'data.date'=>array ('$gte'=>new mongoDate()));
$str = $col1->find($query);

然后循环查看结果:

echo '<pre>';
foreach($str as $doc){
  print_r($doc);
}

1 个答案:

答案 0 :(得分:1)

您必须使用 MongoDate 对象进行查询。

对于当前日期,您可以使用new MongoDate()使MongoDate初始化为当前日期

如果要传递一些自定义日期,可以使用strtotime将字符串转换为日期类型

$stringtime = "2016-04-09 00:00:00"

$inputdate = strtotime($stringtime)

然后最后将它传递给MongoDate构造函数以获取相关对象。

new MongoDate($inputdate)

参考PHP Docs