我的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值。告诉我如何解决这个问题?