2014-09-02 3 views
0

Я использую Spring Data Mongo и Mongo DB;Spring Data Mongo test field

В коллекции документы имеют поле, скажем, содержащее целое число, и мы называем его myInt.

Я хочу, чтобы получить все документы, имеющими MyInt между 2 динамическим Интсом как:

myInt - dynInt1 < myInt < myInt + dynInt2

мне нужно использовать MyInt поля в запросах, можно заранее рассчитать его в Java, чтобы использовать его в creterias ,

ответ

-1

Да, это может быть сделано в SpringData следующим образом:

query.addCriteria(Criteria.where("field").gt(value1).lt(value2)); 
+0

, но как я могу сделайте что-то вроде query.addCriteria (Criteria.where ("field"). gt ("field" - value1) .lt ("field" + value2)); – Titmael

-1

Используйте GTE (больше и equalto) и LTE (менее и equalto), если вы хотите включить динамические Int значения также в критерии ,

+0

но как я могу сделать что-то вроде query.addCriteria (Criteria.where ("field"). Gt ("field" - value1) .lt ("field" + value2)); – Titmael

0

Попробуйте следующий метод в интерфейсе SpringData:

YourEntity findByMyIntLessThanAndMyIntGreaterThan(int min, int max); 

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

int myInt = myRepository.findByXXXX().getMyInt(); 
    int min = myInt - dynInt1; 
    int max = myInt + dynInt2; 
    myRepository.findByMyIntLessThanAndMyIntGreaterThan(min, max); 
Смежные вопросы