В MongoDB я хотел бы использовать операторы сравнения $gt и $lt, где значение может быть null. Когда операторы не работали с null, я искал документацию, но ничего не нашел. В обоих случаях он не вернул документов (хотя $ne, $gte и $lte вернули документы; это означает, что были документы, которые были как равны, так и не равны null).
Я ожидаю, что $gt будет работать как $ne (как тип null порядок сопоставления Mongo такой низкий) и $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, или она действительно должна работать, и, вероятно, это ошибка пользователя?