当我尝试使用减法运行聚合查询时,我遇到了一个奇怪的错误。
使用以下查询:
$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: 此对象已经是运算符表达式,不能用作文档表达式(在 '0' 处)
现在,当我删除 $subtract 并运行它时:
$ops = array(
array(
'$redact' => array(
'$cond' => array(
'if' => array(
'$gte' => array(10,10)
),
'then' => '$$KEEP',
'else' => '$$PRUNE'
)
)
)
);
如果 10 大于 10,则进行比较,这样不会出错。那么为什么 $subtract 会导致上述错误消息?