我知道我刚刚问了另一个关于此问题的问题,但是答案让我提出这个问题,我认为创建另一个问题是合适的。
我在MongoDB中有一个对象,看起来像这样:
{
"id" : NumberLong(12345),
"dateModified" : ISODate("2015-01-21T19:43:17.440Z")
}
我需要创建的查询语句应该像这样(对象中的日期在这两个日期之间):
db.history.find({"dateModified" : { "$gte" : ISODate("2015-01-19T00:00:00.000Z") , "$lte" : ISODate("2015-01-25T00:00:00.000Z")}});
很遗憾,我正在使用Java,但是结果出现了一些问题。这是我的Java查询:
java.util.Date fromDate;
java.util.Date toDate;
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("dateModified", BasicDBObjectBuilder.start("$gte", fromDate).add("$lte", toDate).get());
几乎所有我在互联网上查询相关信息都建议我使用上面的Java代码进行此查询,但是这个查询的文本输出结果是:
{"dateModified" : { "$gte" : { "$date" : "2015-01-19T00:00:00.000Z"} , "$lte" : { "$date" : "2015-01-25T00:00:00.000Z"}}
这个查询没有返回任何结果,因为它没有使用ISODate格式进行查询。编辑:我的意思是,如果我在mongo shell中使用上面的查询,我将得不到任何结果,但如果我使用我发布的第一个查询,我会得到结果。
我的问题是为什么它不会自动转换为ISODate格式,就像大家说的那样?或者,我该怎么做才能确保这个查询转换为ISODate格式?