当我尝试使用减法运行aggreate查询时,我遇到了一个奇怪的错误。
使用以下查询:
$ops = array(
array(
'$redact' => array(
'$cond' => array(
'if' => array(
'$gte' => array('$subtract' => array(20 ,10), 10)
),
'then' => '$$KEEP',
'else' => '$$PRUNE'
)
)
)
);
$results = $collection ->aggregate($ops);
逻辑上,这应该减去20 - 10,并且比较结果是否大于或等于10.问题是它抛出了这个错误:
MongoResultException:localhost:27017:此对象已经是 运算符表达式,不能用作文档表达式(at ' 0&#39)
现在当我删除$ subtract并运行它时:
$ops = array(
array(
'$redact' => array(
'$cond' => array(
'if' => array(
'$gte' => array(10,10)
),
'then' => '$$KEEP',
'else' => '$$PRUNE'
)
)
)
);
如果10大于10,则进行比较,没有错误。那么为什么$ subtract导致上述错误消息?
答案 0 :(得分:0)
答案是$ subtract必须包装在数组中。
'$gte' => array(array('$subtract' => array(20 ,10)), 10)