【问题标题】:MongoDB PHP Aggregation empty results with date ($lte, $gte) in $matchMongoDB PHP聚合空结果与$match中的日期($lte,$gte)
【发布时间】:2015-10-06 18:35:53
【问题描述】:

我有以下聚合:

$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

【问题讨论】:

  • 您构建的日期将无效。如果仍然有问题,请检查您的日期输入并显示您定义它们的代码。
  • 我的输入是一个 DateTime 对象。正确的输入是什么?

标签: php mongodb


【解决方案1】:

它将与 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);

感谢@布莱克斯七

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2015-01-11
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2013-09-12
    • 2019-05-04
    • 1970-01-01
    相关资源
    最近更新 更多