Php MongoDB$减去$redact投掷';对象已经是运算符表达式';错误

Php MongoDB$减去$redact投掷';对象已经是运算符表达式';错误,php,mongodb,mongodb-query,aggregation-framework,mongodb-aggregation,Php,Mongodb,Mongodb Query,Aggregation Framework,Mongodb Aggregation,当我尝试使用subtract运行aggreate查询时,我遇到了一个奇怪的错误 查询如下: 逻辑上,这应该减去20-10,如果结果大于或等于10,则进行比较。问题是它抛出了以下错误: MongoResultException:localhost:27017:此对象已经是 运算符表达式,并且不能用作文档表达式(位于 “0”) 现在,当我删除$subtract并运行以下命令时: $ops = array( array( '$r

当我尝试使用subtract运行aggreate查询时,我遇到了一个奇怪的错误

查询如下:

逻辑上,这应该减去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会导致上述错误消息?

答案是$subtract必须包装在数组中

'$gte' => array(array('$subtract' => array(20 ,10)), 10)

答案是$subtract必须包装在数组中

'$gte' => array(array('$subtract' => array(20 ,10)), 10)