減算を使用して集計クエリを実行しようとすると、奇妙なエラーが発生します。
以下のクエリを使用します。
$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 が上記のエラー メッセージを引き起こしているのでしょうか?