Использование $ slice в репозитории Spring MongoDB с @Query

Я использую Spring Boot с MongoDB. В этом проекте у меня есть класс домена ControlVariable, который имеет атрибут массива с именем ControlVarEntries. Я пытался использовать оператор $ slice, чтобы получить только последние пять controlVarEntries всех controlVars при их извлечении в моем собственном методе findAll. Этот запрос работает при попытке моего клиента Mongo:

db.getCollection('controlVariable').find( {}, { controlVarEntries: { $slice: -5 } } )

Однако я пробовал аналогичный подход в моем проекте Spring Boot с аннотацией @Query, и мне не удалось получить те же результаты. Это, например, возвращает все записи:

@Repository
public interface ControlVariableRepository extends MongoRepository<ControlVariable, String> {

    @Query("{ controlVarEntries: { $slice: ?0 } }")
    Page<ControlVariable> findAllLimitedNumberOfEntriesQuery(Pageable pageable, Integer numberOfEntries);

}

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

Спасибо!

Вы должны использовать $slice: ?1, я считаю

pvpkiran 16.03.2018 16:51

К сожалению, он тоже не работает. Я должен также сказать, что я пробовал без использования каких-либо параметров: @Query ("{}, {controlVarEntries: {$ slice: 5}}") Но это тоже было неправильно.

Deccom 16.03.2018 17:51
1
2
725
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны указать проектный документ в аннотации @Query.

Пытаться

@Query(value = "{}", fields = "{'controlVarEntries': { '$slice': ?0 } }")
Page<ControlVariable> findAllLimitedNumberOfEntriesQuery(Pageable pageable, Integer numberOfEntries);

Другие вопросы по теме