2013-10-14 3 views
4

Я следующий код для поиска в Монго БД с использованием MongoDB весной данных (версия 1.2.3.RELEASE)Критерии MongoDB Spring Data Не оператор

Criteria searchCriteria = Criteria.where("NAME").is("TestName") 
     .and("ID").is("TestID").not().and("Age").is("23"); 

я получил следующий запрос (без оператора) не

Query: { "NAME" : "TestName" , "ID" : "TestID", "Age" : "23" } 

Я ожидал следующий запрос

Query: { "NAME" : "TestName" , "$not" : { "ID" : "TestID"}, "Age" : "23" } 

Что я делаю не так? Любая помощь очень ценится. Благодаря

ответ

3

Согласно documentation на not() влияет Оговорка непосредственно после. Это .and("Age").is("23"). Но вы, вероятно, должны поставить его перед is.

Criteria searchCriteria = Criteria.where("NAME").is("TestName").and("ID").not().is("TestID").and("Age").is("23"); 

Если это не работает, попробуйте использовать andOperator и not().where("ID") конструкцию.

+0

Спасибо за ваш ответ. Я попробовал и пошел за ошибкой. 'java.lang.RuntimeException: org.springframework.data.mongodb.InvalidMongoDbApiUsageException: недопустимый запрос: 'not' не может использоваться с 'is' - вместо этого используется 'ne'. ' – Viraj

+0

Это научит вас не просто использовать первый ответ, который вы видите. Редактировать: Я имею в виду МЕНЯ. – taylorcressy

Смежные вопросы