Преобразование запроса с помощью ISODate

#java #mongodb #mongodb-query

#Ява #mongodb #mongodb-запрос

Вопрос:

У меня есть этот запрос MongoDB:

 db.Certificates.countDocuments(  {"vaccination.somministration_date":ISODate("2021-08-04")} )  

и я хочу выполнить это также в своем java-приложении, поэтому я попробовал этот код:

 Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2021-08-04"); Bson query = eq("vaccination.somministration_date", date); long count = collection.countDocuments(query);  

Но результаты, которые я получаю, отличаются (у монго в результате 1, а у java 0).

Ответ №1:

MongoDB хранит время в GMT 0. Ваш первый запрос в Javascript вызывает ISODate() , который всегда выдает дату и время со смещением по времени GMT 0 («Z»ulu). Вполне вероятно, что ваша среда Java exec при вызове parse() учитывает смещение по местному времени и создает немного другое время.