Если вы используете Java, вы можете создавать объекты Date из строк, используя метод parse класса DateFormat.
Документацию по Java для класса DateFormat можно найти здесь:
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html
Конкретный раздел о методе разбора находится здесь:
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html#parse%28java.lang.String%29
Документацию по Java для объекта Date можно найти здесь:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Date.html
Согласно разделу «Сводка конструктора», возможность передавать строку в конструктор «устарела. Начиная с версии 1.1 JDK заменена на DateFormat.parse (String s)».
Во время исследования вышеизложенного я также наткнулся на класс Calendar, который может использоваться для преобразования объекта Date и набора целых чисел. Это может быть необязательно для этого приложения, но я подумал, что было бы полезно включить ссылку на документацию:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html
Целые числа для года, месяца, дня, часа и т. Д. Могут быть переданы с помощью метода set:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html#set%28int,%20int,%20int,%20int,%20int%29
В качестве примера, вот короткая Java-программа, которая создает несколько объектов Date, сохраняет их в коллекции Mongo, а затем выполняет запрос, аналогичный тому, который вы описали. Надеюсь, это поможет вам достичь вашей цели. ПРИМЕЧАНИЕ. Эта программа удаляет коллекцию с именем «даты», поэтому обязательно измените имя коллекции, если у вас уже есть такая коллекция в вашей базе данных!
public static void main(String[] args) throws UnknownHostException, MongoException {
Mongo m = new Mongo( "localhost:27017" );
DB db = m.getDB("test");
DBCollection coll = db.getCollection("dates");
coll.drop();
DateFormat df = DateFormat.getInstance();
String dateString = new String();
Date myDate = new Date();
// Save some test documents
for(int i=1; i<11; i++){
dateString = "04/" + String.valueOf(i) + "/12 11:00 AM, EST";
BasicDBObject myObj = new BasicDBObject("_id", i);
try {
myDate = df.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
myObj.put("date", myDate);
System.out.println(myDate);
coll.save(myObj);
}
// Build the query
Date startDate = new Date();
Date endDate = new Date();
try {
startDate = df.parse("04/4/12 11:00 AM, EST");
endDate = df.parse("04/6/12 11:00 AM, EST");
} catch (ParseException e) {
e.printStackTrace();
}
BasicDBObject dateQuery = new BasicDBObject();
dateQuery.put("$gte", startDate);
dateQuery.put("$lte", endDate);
System.out.println("---------------");
//Execute the query
DBCursor myCursor = coll.find(new BasicDBObject("date", dateQuery));
//Print the results
while(myCursor.hasNext()){
System.out.println(myCursor.next().toString());
}
}