Монго ISODate-запрос в Java - PullRequest
       10

Монго ISODate-запрос в Java

11 голосов
/ 01 февраля 2012

У меня есть запрос на монго, который нужно выполнить:

query = { "dateField" : { "$gte" : ISODate('2011-11-10T07:45:32.962Z')  } }

Когда я делаю db.Collection.find(query) в оболочке монго, я могу получить результаты.

Как я могзапросить это с помощью Java?Я попытался создать строку на основе параметра Date.Но в процессе построения строки она в конечном итоге передается как "ISODate('2011-11-10T07:45:32.962Z')" вместо ISODate('2011-11-10T07:45:32.962Z') (без окружающих кавычек).

Каков наилучший способ построения этого запроса с использованием Java API?

Спасибо!

Ответы [ 2 ]

21 голосов
/ 01 февраля 2012

Используйте обычную дату Java - также я рекомендую QueryBuilder:

Date d = new Date(); // or make a date out of a string...
DBObject query = QueryBuilder.start().put("dateField").greaterThanEquals(d).get();
6 голосов
/ 08 декабря 2015

У меня есть поисковый лот, и я потратил больше часа на то, чтобы узнать, как получить данные при наличии ISODate в модели Монго.

Поскольку конструктор по умолчанию для даты устарел, поэтому он не работал в моем случае.

BasicDBObject searchQuery = new BasicDBObject("_id" , 1);
try {
        searchQuery.append("timestamp",BasicDBObjectBuilder.start( "$gte",new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS\'Z\'").parse("2015-12-07T10:38:17.498Z")).get());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
...