MongoDB Търсене по дата в Java връща нула резултати

Имам списък с файлове в GridFS, които се опитвам да направя заявка по дата. Примерният документ изглежда по следния начин:

{
    "_id" : ObjectId("52e431d3e84f6fa18c53c808"),
    "chunkSize" : NumberLong(262144),
    "length" : NumberLong(13021),
    "md5" : "0eb01f0d266f4bf4764d4ffc7e70a7ed",
    "filename" : "120_1390686674383",
    "contentType" : null,
    "uploadDate" : ISODate("2014-01-25T21:51:15.049Z"),
    "aliases" : null
}

Опитвам се да получа „най-скорошния“ според клеймото за време, като правя следното:

DateTime dt = new DateTime(queryObj.getTime()); //org.joda.DateTime
BasicDBObject sort = new BasicDBObject();
sort.put("uploadDate", -1);

BasicDBObject query = new BasicDBObject();
query.put("uploadDate", new BasicDBObject("$gte", dt));

DBCursor cursor = fileStore.getFileList(query, sort);

Ако просто сортирам fileStore, получавам обратно множество записи и мога да изброявам чрез курсора. Въпреки това, когато се опитвам да използвам $gte или $lte, получавам нула резултати.

Има ли липсваща стъпка?


person ist_lion    schedule 25.04.2014    source източник


Отговори (1)


Предавате препратка към joda DateTime, която драйверът не знае как да направи. Ако проверите регистрационните файлове, вероятно ще откриете, че той по същество извиква toString() за това и го предава. Тъй като низът не е дата, сравнението е неуспешно. Опитайте да подадете само java.util.Date (можете да получите такъв от DateTime, iirc).

person evanchooly    schedule 25.04.2014
comment
Бяхте прав, обектът dt имаше to DateTime, който работеше правилно. - person ist_lion; 28.04.2014