给定日期的java mongodb搜索
我们在mongodb中有一个user_audit entitytable,它存储所有登录/注销信息。 比如说,给定日期的java mongodb搜索,java,mongodb,date,search,Java,Mongodb,Date,Search,我们在mongodb中有一个user_audit entitytable,它存储所有登录/注销信息。 比如说, "_id" : ObjectId("5228cf0156961de6693b74c0"), "active" : true, "fname" : "Tom", "lastlogin" : ISODate("2013-09-05T18:35:45.608Z"), "lastloginip" : "0:0:0:0:0:0:0:1", "lname" : "Bailey", "lastlog
"_id" : ObjectId("5228cf0156961de6693b74c0"),
"active" : true,
"fname" : "Tom",
"lastlogin" : ISODate("2013-09-05T18:35:45.608Z"),
"lastloginip" : "0:0:0:0:0:0:0:1",
"lname" : "Bailey",
"lastlogout" : ISODate("2013-09-05T18:36:45.568Z"),
在生产过程中,此表中有数千条记录
现在,管理员希望查找特定日期的所有登录名。由于在lastlogin字段中附加到ISODate的时间信息,我无法查找日期的精确匹配。在Java中,使用新日期插入此字段值。
问题是特定日期登录的时间信息不断变化
试过了
query.putlastlogin,新BasicDBObject$lte,givenDate.append$gte,givenDate
显然,它不会返回结果,因为日期的时间部分不匹配
从Java传递到mongo的查询是:
query={ "lastlogin" : { "$lte" : { "$date" : "2013-09-05T04:00:00.000Z"} , "$gte" : {
"$date" : "2013-09-05T04:00:00.000Z"}}}
[注意:如果我们在java中使用MM_dd_yyyy进行格式化,则默认值始终为04:00:00.000Z,不确定原因..]
问题是我们在生产数据库中有很多记录。对于新记录,我可以在从Java插入之前清空时间部分。但对于现有记录,不确定如何处理。如何在给定日期获取记录?根据,您的方向是正确的。您可以查询以下内容
query.put("lastlogin", new BasicDBObject("$lt", givenDatePlusOneDay).append("$gte", givenDateAt00h00min));
这是一个间隔,而不是相同的日期。知道为什么它默认为T04:00:00.000Z吗?