Mongo聚合在本地工作但不在生产中

时间:2014-02-24 03:53:46

标签: php mongodb

在本地环境中,我使用Windows,PHP 5.5.0和最新版本的MongoDB和MongoDB驱动程序。在产品中我使用:Cent OS 6,都是一样的。

我的代码是:

    $result = $mongodb->messages->aggregate(
    ['$match' =>
        ['$or' =>
            [
                array('from_group'   => $hangoutA),
                array('from_group'   => $hangoutB),
            ]
        ]
    ],
    [ '$group' => [
        '_id' => null,
        'message' => ['$last' => '$message'],
        'sent_time' => ['$last' => '$sent_time']
    ]
    ]);

此代码适用于本地,但不适用于生产。

返回:Parse error: syntax error, unexpected '[', expecting ')' in /var/www/html/app/models/Messages.php on line 43

2 个答案:

答案 0 :(得分:1)

问题是我在生产中没有相同的PHP版本。您需要PHP 5.4+才能在PHP中使用([])

更新您的PHP版本,即解决方案。

答案 1 :(得分:0)

井聚合期望它的管道参数作为列表,所以我建议用[ .. ]包装语句如下:

$result = $mongodb->messages->aggregate([
    ['$match' =>
        ['$or' =>
            [
                array('from_group'   => $hangoutA),
                array('from_group'   => $hangoutB),
            ]
        ]

    ],
    [ '$group' => [
        '_id' => null,
        'message' => ['$last' => '$message'],
        'sent_time' => ['$last' => '$sent_time']
    ]]

]);