当前位置:首页>正文

mongodb数据库怎么查询出某一段时间内的数据 如何在Java中对MongoDB按日期进行查询统计

2023-07-30 18:45:26 互联网 未知

mongodb数据库怎么查询出某一段时间内的数据

参考代码如下:
var start = new Date(2010, 3, 1)
var end = new Date(2010, 4, 1)

db.posts.find({created_on: {$gte: start, $lt: end}})
(代码内日期可自行设置修改)

如何在Java中对MongoDB按日期进行查询统计

方法一:通过构造BasicDBObject对象来进行查询
[java] view plain copy
int startYear=2015,endYear=2016
int startMonth=12,endMonth=1
int startDay=1,endDay=1
BasicDBObject query= new BasicDBObject("applydate", new BasicDBObject("$gte", new Date(startYear - 1900, startMonth - 1, startDay)).append("$lt", new Date(endYear - 1900, endMonth -1, endDay)))//因为无法确知当前月有多少天,所以就从当月的1号(包含)计到下月1号(不包含)
int iCount = cltApplies.find(query).count()
System.out.println(iCount)

经测试上述代码执行完毕后iCount为9。也就是在2016-1-1至2016-1-31期间有9条记录。
方法二:通过BasicDBObjectBuilder对象来查询:
[java] view plain copy
int startYear=2016,endYear=2016
int startMonth=1,endMonth=2
int startDay=1,endDay=1
BasicDBObject query= new BasicDBObject()
query.put("applydate", BasicDBObjectBuilder.start("$gte", new Date(startYear - 1900, startMonth - 1, startDay)).add("$lt", new Date(endYear - 1900, endMonth - 1, endDay)).get())
int iCount = cltApplies.find(query).count()
System.out.println(iCount)

上述代码执行后iCount同样为9。

注意:因为java.util.Date(year,month,day)这个构造函数中year是超出1900的年数,所以需要减去1900;month从0开始,所以需要减去1。这个问题容易被初学者忽视。

下面扩展地说一下如果要进行带日期过滤条件的统计,该如何做。

前面的东西都相同,只是在统计的时候需要调用集合的distinct方法。如统计某个字段不重复的值有哪些,可用如下写法:

[java] view plain copy
int startYear=2016,endYear=2016
int startMonth=1,endMonth=2
int startDay=1,endDay=1
BasicDBObject query= new BasicDBObject()
query.put("applydate", BasicDBObjectBuilder.start("$gte", new Date(startYear - 1900, startMonth - 1, startDay)).add("$lt", new Date(endYear - 1900, endMonth - 1, endDay)).get())
ListlstUserIds = cltApplies.distinct("userId", query) System.out.println(lstUserIds.size()) 上面这段代码的执行结果为4。也就是在2016-1-1至2016-1-31之间出现了4个不同的userId。

求教mongodb大神,在java中怎么以时间为条件查询

在java中怎么以时间为条件查询
java获取当前时间精确到毫秒

new SimpleDateFormat("yyyyMMddHHmmssSSS") .format(new Date() )

方法2:
Calendar Cld = Calendar.getInstance()

int YY = Cld.get(Calendar.YEAR) 
int MM = Cld.get(Calendar.MONTH) 1
int DD = Cld.get(Calendar.DATE)
int HH = Cld.get(Calendar.HOUR_OF_DAY)
int mm = Cld.get(Calendar.MINUTE)
int SS = Cld.get(Calendar.SECOND)
int MI = Cld.get(Calendar.MILLISECOND)

String curTime = YY   MM   DD   HH   mm   SS   MI

Calendar cal = Calendar.getInstance()
java.util.Date date = cal.getTime()

SimpleDateFormat sdFormat = new SimpleDateFormat("yyyyMMddhhmmssSSS")

String myTime = sdFormat.format(currentTime)

mongodb 查询时间最接近当前时间的10条记录,如何查询

cursor.count和cursor.skip。 但是mongodb不保证数据的顺序,如果你需要的是最新加入数据库的那一条doc,你最好在doc里加一个时间来记录存入数据库的时候,然后根据这个时间来排序。

kettle中mongodb查询语句怎么写

image是sqlserver中存储大二进制的数据类型而blob是oracle中存储大二进制的数据类型这两个是对应的一般来说,不能直接查看二进制的数据内容。需要知道是原始是什么内容,文件?还是什么?