MongoDB ISODate 查询 PHP
MongoDB ISODate query with PHP
我正在尝试根据日期从 mongo 集合中检索数据,我想获取日期大于或等于当前日期(即数据字段下的日期)的数据。但是我似乎无法理解为什么我的查询 returns 什么都没有(空 mongo 对象)。下面是我的代码:
数组struct/content:
{
"_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);
}
您必须使用 MongoDate 对象来查询。
对于当前日期,您可以使用 new MongoDate()
使 MongoDate 初始化为当前日期
如果您想传递一些自定义日期,您可以使用 strtotime 将字符串转换为日期类型
$stringtime = "2016-04-09 00:00:00"
$inputdate = strtotime($stringtime)
然后最终将其传递给 MongoDate 构造函数以获取相关对象。
new MongoDate($inputdate)
参考PHP Docs
对于那些像我一样通过搜索登陆这里的人,同时可以在这里找到当前的解决方案(2021):https://www.php.net/manual/en/class.mongodb-bson-utcdatetime.php
请注意第一条带有毫秒的注释。也许它会在您排除故障时节省您的时间 ;-)
我正在尝试根据日期从 mongo 集合中检索数据,我想获取日期大于或等于当前日期(即数据字段下的日期)的数据。但是我似乎无法理解为什么我的查询 returns 什么都没有(空 mongo 对象)。下面是我的代码:
数组struct/content:
{
"_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);
}
您必须使用 MongoDate 对象来查询。
对于当前日期,您可以使用 new MongoDate()
使 MongoDate 初始化为当前日期
如果您想传递一些自定义日期,您可以使用 strtotime 将字符串转换为日期类型
$stringtime = "2016-04-09 00:00:00"
$inputdate = strtotime($stringtime)
然后最终将其传递给 MongoDate 构造函数以获取相关对象。
new MongoDate($inputdate)
参考PHP Docs
对于那些像我一样通过搜索登陆这里的人,同时可以在这里找到当前的解决方案(2021):https://www.php.net/manual/en/class.mongodb-bson-utcdatetime.php
请注意第一条带有毫秒的注释。也许它会在您排除故障时节省您的时间 ;-)