MongoDB PHP聚合空结果,日期($lte,$gte)为$match
我有以下几点:MongoDB PHP聚合空结果,日期($lte,$gte)为$match,php,mongodb,Php,Mongodb,我有以下几点: $pipeline = array( array('$match' => array( 'matchDate' => array( '$lte' => $dateEnd, // DateTime object '$gte' => $dateStart // DateTime object ) )), array('$group' => array
$pipeline = array(
array('$match' => array(
'matchDate' => array(
'$lte' => $dateEnd, // DateTime object
'$gte' => $dateStart // DateTime object
)
)),
array('$group' => array(
'_id' => '$sport',
'count' => array('$sum' => 1)
))
);
$m = new \MongoClient('localhost');
$c = $m->selectDB('test_database')->selectCollection('Match');
$t = $c->aggregate($pipeline);
此聚合将返回一个空结果
如果我直接在我的MongoDB上运行聚合,它将毫无问题地工作,并给出预期的结果。
这是本机查询
db.Match.runCommand({
"aggregate": "Match",
"pipeline": [
{
"$match": {
"matchDate": {
"$lte": new ISODate("2015-10-07T23:59:59+02:00"),
"$gte": new ISODate("2015-10-06T00:00:00+02:00")
}
}
},
{
"$group": { "_id": "$sport", "count": { "$sum": 1 } }
}
]});
问题只发生在聚合上。查找带有日期的查询($lte,$gte)也可以正常工作
下面是一个示例文档
{
"_id": ObjectId("5613bbb79042ad801f0041ab"),
"sport": ObjectId("5613bbb79042ad801f0041a8"),
"matchDate": new Date("2015-09-26T13:45:00+0200")
}
有人知道这里发生了什么吗
我正在使用
MongoDB支持1.6.11
PHP 5.6.13
MongoDB 3.0.6它将与MongoDate一起工作
$pipeline = array(
array('$match' => array(
'matchDate' => array(
'$lte' => new MongoDate($dateEnd->getTimestamp()),
'$gte' => new MongoDate($dateStart->getTimestamp())
)
)),
array('$group' => array(
'_id' => '$sport',
'count' => array('$sum' => 1)
))
);
$m = new \MongoClient('localhost');
$c = $m->selectDB('test_database')->selectCollection('Match');
$t = $c->aggregate($pipeline);
谢谢@Blakes Seven它将与MongoDate合作
$pipeline = array(
array('$match' => array(
'matchDate' => array(
'$lte' => new MongoDate($dateEnd->getTimestamp()),
'$gte' => new MongoDate($dateStart->getTimestamp())
)
)),
array('$group' => array(
'_id' => '$sport',
'count' => array('$sum' => 1)
))
);
$m = new \MongoClient('localhost');
$c = $m->selectDB('test_database')->selectCollection('Match');
$t = $c->aggregate($pipeline);
谢谢@Blakes Seven它将与MongoDate合作
$pipeline = array(
array('$match' => array(
'matchDate' => array(
'$lte' => new MongoDate($dateEnd->getTimestamp()),
'$gte' => new MongoDate($dateStart->getTimestamp())
)
)),
array('$group' => array(
'_id' => '$sport',
'count' => array('$sum' => 1)
))
);
$m = new \MongoClient('localhost');
$c = $m->selectDB('test_database')->selectCollection('Match');
$t = $c->aggregate($pipeline);
谢谢@Blakes Seven它将与MongoDate合作
$pipeline = array(
array('$match' => array(
'matchDate' => array(
'$lte' => new MongoDate($dateEnd->getTimestamp()),
'$gte' => new MongoDate($dateStart->getTimestamp())
)
)),
array('$group' => array(
'_id' => '$sport',
'count' => array('$sum' => 1)
))
);
$m = new \MongoClient('localhost');
$c = $m->selectDB('test_database')->selectCollection('Match');
$t = $c->aggregate($pipeline);
谢谢@Blakes Seven您的构建日期将无效。检查日期输入,如果仍然存在问题,则显示定义日期的代码。我的输入是DateTime对象。正确的输入是什么?您的构造日期将无效。检查日期输入,如果仍然存在问题,则显示定义日期的代码。我的输入是DateTime对象。正确的输入是什么?您的构造日期将无效。检查日期输入,如果仍然存在问题,则显示定义日期的代码。我的输入是DateTime对象。正确的输入是什么?您的构造日期将无效。检查日期输入,如果仍然存在问题,则显示定义日期的代码。我的输入是DateTime对象。正确的输入是什么?