Допустим, мой монго-документ выглядит следующим образом:
{
_id: "some _id",
name: "some name",
type: "A" | "B" | "C" | or it may be null
}
Когда я звоню db.getCollection('mycollection').find().sort({ type: -1 })
Сначала я получаю документы с type: null
, потому что данные сортируются по каноническому типу, где нольимеет намного более низкое каноническое значение, чем число / строка
Есть ли способ сформировать запрос, чтобы нулевые значения были последними?
Я нашел этот вопрос Как я могу разобрать, что нули последний раз упорядочены в mongodb? но там предлагается использовать агрегацию и добавлять "поддельные" значения, что мне не кажется хорошим.
Использование агрегации может работать, если формируется фасет с отсортированными документами, где критерии сортировки не равны нулю, и документами, где он равен нулю, а затем объединяются оба массива, но это может усложниться, если существует более одного критерия сортировки..