MongoDB在Java中按日期查询

and*_*lko 5 java date mongodb

我正在尝试向mongodb查询"date"在两个日期之间的文档.示例数据是:

{
        "_id" : ObjectId("4fad0af6709fbc1d481c3e05"),
        "ID" : NumberLong("200930746205085696"),
        "text" : "Forgot my charger...:(",
        "date" : ISODate("2012-06-14T10:49:57Z"),
        "sentiment" : "NEG"
}
Run Code Online (Sandbox Code Playgroud)

我的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);
Run Code Online (Sandbox Code Playgroud)

但是光标对象没有结果.

查询对象如下所示:

{ "date" : { "$gt" : { "$date" : "2012-05-15T00:16:15.184Z"} , "$lte" : { "$date" : "2012-06-14T10:16:15.184Z"}}}
Run Code Online (Sandbox Code Playgroud)

我怀疑问题是数据库中的日期表示.有什么建议吗?

joc*_*lyn -1

您不应该在查询中使用and 运算符吗?

db.foo.find( { $and: [ { date: { $gt: startDate } }, {date : { $lt: endDate} }  ] } )
Run Code Online (Sandbox Code Playgroud)