2015-11-26 2 views
1

Я использую MongoDB с весной. Я хочу запросить базу данных с помощью _id.Как запросить mongo db от _id?

В настоящее время у меня есть этот запрос:

Query q = new Query(Criteria.where("_id").is(someId).and("deleted").is(false)); 

Но это дает мне StackOverflowError каким-то образом. Что случилось с этим вопросом? Или что это лучший способ сделать это?

+0

какая библиотека вы используете? –

+2

также отсутствует) –

+0

org.springframework.data.mongodb.core.query.Criteria; org.springframework.data.mongodb.core.query.Query; версия 1.8.1.RELEASE –

ответ

3

Создать явную и запрос вместо прикованных один с помощью $and оператора Criteria.andOperator() для всех предусмотренных следующих критериев:

Query q = new Query(
    new Criteria().andOperator(
     Criteria.where("_id").is(someId), 
     Criteria.where("deleted").is("false") 
    ) 
); 

Это, как правило, используется в тех случаях, когда вы не можете использовать Criteria.and() добавить несколько критериев в той же области, например

Query q = new Query(); 
q.addCriteria(Criteria.where("age").lt(40).and("age").gt(10)); 

выдаст ошибку, так что обходной путь будет использовать Criteria.andOperator() as

Query q = new Query(); 
q.addCriteria(
    Criteria.where("age").exists(true).andOperator(
     Criteria.where("age").gt(10), 
     Criteria.where("age").lt(40) 
    ) 
);