我试图向mongodb查询两个日期之间“日期”的文件。 样本数据是:
{
"_id" : ObjectId("4fad0af6709fbc1d481c3e05"),
"ID" : NumberLong("200930746205085696"),
"text" : "Forgot my charger...:(",
"date" : ISODate("2012-06-14T10:49:57Z"),
"sentiment" : "NEG"
}
我的Java代码是:
DBCursor cursor = null;
DB db = connect();
Date startDate = new Date(System.currentTimeMillis() - (long)(numOfTimePeriods+1)*time);
Date endDate = new Date(System.currentTimeMillis() - (long)numOfTimePeriods*time);
DBObject query = new BasicDBObject();
query.put("date", new BasicDBObject("$gt", startDate).append("$lte", endDate));
cursor = db.getCollection("status").find(query);
但是光标对象没有结果。
查询对象如下所示:
{ "date" : { "$gt" : { "$date" : "2012-05-15T00:16:15.184Z"} , "$lte" : { "$date" : "2012-06-14T10:16:15.184Z"}}}
我怀疑问题是数据库中的日期表示。 对此有何建议?
答案 0 :(得分:1)
$ date表示只是日期中Java驱动程序中的toString表示。它使用严格的JSON / BSON表示,而不是扩展的10gen BSON,其中值可以是对象,就像它们在shell中一样。你不应该尝试使用toString输出在shell中查询,因为它不适用于很多情况。
答案 1 :(得分:-1)
您不应该在查询中使用and operator吗?
db.foo.find( { $and: [ { date: { $gt: startDate } }, {date : { $lt: endDate} } ] } )