2016-03-14 6 views
0

У меня проблема, когда при записи, которую я ищу, существует, запрос возвращает результат без проблем, но когда я ищу что-то, что не существует, он не возвращает null, он просто делает ничего. Безмолвно терпит неудачу и не выполняет остальную часть кода.Java MongoDB не возвращает нуль

Мой запрос просто выглядит следующим образом:

Document contact = contacts.find(eq("_id", new ObjectId(customerID))).first();

понял это: строка должна быть шестигранной в противном случае запрос будет молча терпеть неудачу.

+0

Что вы подразумеваете под «молча терпит неудачу, не выполняет остальные кода "? Вы уверены, что нет никакого исключения (что вы, возможно, проигнорируете)? Или запрос все еще запущен? – Thilo

+0

В определении метода или каких-либо опциях 'try/catch' нет кода исключения. Сервер продолжает работать, но если я поместил 'System.out.println()' прямо после моего 'contacts.find()', он никогда ничего не печатает. – Shepard

+0

Если нет записи, как можно ожидать, что она вернется первым? это ошибка – Saleem

ответ

0

Вместо Document contact = contacts.find(eq("_id", new ObjectId(customerID))).first();

Изменить его (Вы можете оптимизировать его. Я делаю верхней части моей головы)

if(contacts.find(eq("_id", new ObjectId(customerID)))! = null) 
{ 
    Document contract = contacts.find(eq("_id", new ObjectId(customerID))).first(); 
} 
+0

FindIterable уже доказал нулевой результат. https://github.com/mongodb/mongo-java-driver/blob/3ffbe70a70a09f4e7a081922b20e8cdef444c1d5/driver/src/main/com/mongodb/FindIterableImpl.java#L205 – nobody

+0

@nobody, извините, я не получил его , Не могли бы вы рассказать? – Saleem

+0

О, я понял. Благодарю. Я говорил, если нет результата, как можно ожидать первого()? первое означает, что должно быть как минимум одна запись. я прав? – Saleem

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