PHP - MongoDB聚合:多类型字段上的GROUP BY

时间:2016-02-25 14:14:31

标签: php mongodb aggregation-framework

我的MongoDB Collection中有一个托管两种类型数据的字段。在某些文档中,该字段具有整数值,例如

"campaign_code" : NumberLong(100097)

在其他文档中,该字段具有Array值,例如

"campaign_code" : [NumberLong(100087), NumberLong(100136), NumberLong(100137), NumberLong(100138), NumberLong(100135)]

现在,我以前用"campaign_code"对结果进行分组,但那时它只有Integer值。现在,该字段具有两种类型的值。问题是PHP MongoDB驱动程序智能执行相同的功能还是需要更改我的代码?

我之前的PHP代码:

$pipeline = array(
    array('$match' => array('impression.affiliate_id' => $affiliate_id)),
    array(
        '$group' => array(
            '_id' => array(
                'impression.campaign_code' => '$impression.campaign_code'
            ),
            'count' => array('$sum' => 1)
        )
    ),
    //sort
    array('$sort' => array('count' => -1))
);

我做了一些更改,并添加了以下代码行:

array('$unwind' => '$impression.campaign_code')

但这引发了一个例外:

exception: Value at end of $unwind field path '$impression.campaign_code' must be an Array, but is a NumberLong64

现在异常非常有效,因为很少文档在字段中只有Integer值。告诉我如何解决这个问题?

0 个答案:

没有答案