Как получить новейшую запись для каждого пользователя, использующего данные весны mongodb? - PullRequest
0 голосов
/ 25 августа 2018

Я борюсь с монго-запросом. Мне нужно найти коллекцию документов в одном запросе. Коллекция должна содержать документ с самой новой датой (поле createdAt) для каждого пользователя в отдельном запросе.

В Споке есть тестовый пример, демонстрирующий то, что я пытаюсь достичь:

def 'should filter the newest location for every user'() {
    given:
        List locationsInDb = [
            buildLocation(USERNAME_1, '2017-02-03T10:37:30.00Z'),
            buildLocation(USERNAME_1, '2017-03-04T10:37:30.00Z'),
            buildLocation(USERNAME_2, '2017-02-05T10:37:30.00Z'),
            buildLocation(USERNAME_2, '2017-03-06T10:37:30.00Z')
        ]
        insertToMongo(locationsInDb)
    when:
        List filteredLocations = locationRepository.findLastForEveryUser()
    then:
        filteredLocations == [locationsInDb.get(1), locationsInDb.get(3)]
}

Я обнаружил, что различные методы являются частью версии 2.1.0.M1, поэтому они еще не доступны.

Я также пытался использовать аннотацию @Query, но в документации (ссылка ниже) не указано, как создать запрос, подобный моему.

https://docs.spring.io/spring-data/data-document/docs/current/reference/html/#d0e3309

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 28 августа 2018

Нет средств для выражения запроса, который вы ищете, через производный запрос в Spring Data, а также с использованием собственных операторов MongoDB . Distinct также не будет выполнять работу, поскольку он просто извлекает отдельные значения одного поля в массив.

Пожалуйста, рассмотрите возможность использования Агрегирование .Особенности Spring Data можно найти в справочной документации .

...