Проблема с сортировкой, когда документы сохраняют только ненулевые столбцы - PullRequest
1 голос
/ 11 июля 2019

Проблема с сортировкой, когда документы сохраняют в документах только ненулевые столбцы: мой документ mongodb выглядит так:

 # documents-1 :
            "taskId": "2",
            "taskType": "RFOUTAUD",
            "id": "5d25bdda2f7ef0000654f281",             
            "releaseDatetime": "2019-05-28T09:00:39",
            "startDateTime": "2019-05-28T09:44:11",
            "endDateTime": "2019-05-28T09:50:25",
            "resourceId": "SUPER",
            "deviceCode": "QATERM1",
            "effectivePriority": 40,
            "sourceLocation": "1SS100",
            "sourceLocationTravelSequence": "020055000",
            "sourceWorkZone": "1RCVSHP035",
            "sourceWorkZoneTravelSequence": "15035",

документы-2:

        "taskId": "70",
        "taskType": "RFOUTAUD",
        "id": "5d25bdda2f7ef0000654f281",           
        "releaseDatetime": "2019-05-28T09:00:39",
        "startDateTime": "2019-05-28T09:44:11",
        "endDateTime": "2019-05-28T09:50:25",
        "resourceId": "SUPER",
        "deviceCode": "QATERM1",
        "effectivePriority": 40,
        "sourceLocation": "1SS100",
        "sourceLocationTravelSequence": "020055000",
        "sourceWorkZone": "1RCVSHP035",
        "goalTime": 20

Имеется n записей с # документами-1: и несколько записей с # документами-2 - имеет дополнительный столбец "goalTime"

Теперь, когда я сортирую с Pageable по столбцу "goalTime", в результате я получаю только те документы, которые имеют "goalTime" и исключая документы, в которых отсутствует столбец запрос выглядит примерно так

db.getCollection('29ec09db-20b9-4c52-a5af-53519f75a5b4_task').find({}).limit(10).sort({goalTime:1})

Пройдя реализацию org.springframework.data.domain.Sort, я нашел способ включить те документы, в которых отсутствует сам столбец. Теперь проблема заключается в документе, в котором есть столбец "goalTime" со значением, поступающим в качестве последней записи, и если я поставлю предел 10, он не будет частью этого результата.

Это запрос монго:

`db.getCollection('29ec09db-20b9-4c52-a5af-53519f75a5b4_task').find({}).limit(2).sort({goalTime:1,NULLS_LAST:1})`

Я ищу результат, который сначала показывает документ, в котором отсортированы столбцы со значением, а затем документы, в которых сами столбцы отсутствуют

1 Ответ

1 голос
/ 11 июля 2019

Я нашел решение, которое я ищу.Приведенный ниже запрос включает записи, даже если отсортированные столбцы отсутствуют в документах db.getCollection('29ec09db-20b9-4c52-a5af-53519f75a5b4_task').find({}).limit(20).sort({goaltime: -1, NULL_LAST : 1})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...