MongoDB では、値がnullになる可能性のある $gt および $lt 比較演算子を使用したいと考えています。演算子がnullで機能しない場合、ドキュメントを探しましたが、何も見つかりませんでした。どちらの場合も、ドキュメントは返されませんでした (ただし、$ne、$gte、および $lte はドキュメントを返しました。つまり、 nullと等しいドキュメントと等しくないドキュメントが存在したことを意味します)。
$gt は基本的に $ne のように動作し ( null型のMongo comarison 順序が非常に低いため)、$lt は同じ理由で何も返さないことを期待します。
クエリに渡す値は変数 (潜在的にnull ) であるため、これが機能することを望んでいましたが、 nullの特別なケースを記述する必要はありません。
次のコレクションを考えると、私が期待していたものの例:
{
id: 1,
colNum: null
}
{
id: 2,
colNum: 72
}
{
id: 3
}
次のクエリが必要です。
db.testtable.find( { "colNum" { $gt : null } } )
戻るには:
{
id: 2,
colNum: 72
}
しかし、何も返されませんでした。
$gt と $lt がnullで動作しないように見える理由はありますか、それとも MongoDB のバグですか、それとも実際に動作するはずであり、ユーザー エラーが発生する可能性がありますか?