Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB PHP聚合空结果,日期($lte,$gte)为$match_Php_Mongodb - Fatal编程技术网

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对象。正确的输入是什么?