MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)

问题:
1,ISODate("2016-01-01T00:00:00Z"),这个是什么日期格式。
2,mongo vue的时间类型属性的相关查询。包括,大于某个时间,小于某个时间,在某一段时间范围。
3,了解一下mongo数据库中存储时间Date类型数据的秘密。

MongoDB 日期查询目前可通过Date 和ISODate两种方式:
1.Date方式。

例如startDate<=2012.12.7且endDate>=2012.12.7:可翻译为
"startDate":{$lte:new Date(2012,11,7)},"endDate":{$gte:new Date(2012,11,7)}。
如下是查询日期大于等于2016年12月1日的记录条数(注意,中间的月份写11,就是12月)
db.xxx.find({"updateTime" : {$gte:new Date(2016,11,1)}})
看下图,发现,mongo vue自动给日期转换为ISODate的格式了。

MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)_第1张图片

2.ISODate方式。
可以看到上面写的方式最后也转化为这个日期格式。
ISODate("2016-01-01T00:00:00Z")
看这个奇怪的日期格式。注意,日期后面最后个字母是Z,而我们一般debug所看到的日期是没有这个Z的,不信我给你debug看。

MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)_第2张图片

UTC 通用标准时,以z来标识
mongo中的时间与China系统时间相差了8个小时,
这是因为mongo中的date类型以UTC(Coordinated Universal Time)存储,就等于GMT(格林尼治标准时)时间。而系统时间使用的是GMT+0800时间,两者正好相差8个小时。
下面把这个标准时间转换成我们自己的时间。知道这个,在下面查时间范围啥的,就好说了。

MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)_第3张图片

db.xxx.find({"updateTime" : {$gte:new Date("2016-11-7T01:16:33.303Z")}})

MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)_第4张图片

db.xxx.find({"updateTime" : {"$gte":ISODate("2013-01-17T01:16:33.303Z")}})

MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)_第5张图片

{"updateTime" : {"$gte":ISODate("2016-11-28T11:16:33.303Z"),"$lte":ISODate("2016-12-05T01:16:33.303Z")}}

MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)_第6张图片

惭愧啊,我想试试$e,这个等于某个日期点的查询,就是没有成功。有谁知道的话,求告知。
日后,知道了,再来更新吧。

为了测试,mongo数据库里面存的日期类型的数据,确实是比当前时间晚8小时,然后就新插入一条数据到数据库,就有如下图:
不过,你Java代码从数据库取出来的时候,这个日期如果不加格式化的话,那么你在前台得到的时间就是一串数字,也就是那个时间所表示的毫秒数,也就是时间戳。这个我测试过了,就不上这个图了。你可以搜索下怎么把时间戳,给格式化成正确时间。

MongoDB中的日期查询命令的记录:大于、小于、等于、范围内、(mongoVUE 操作记录)_第7张图片

你可能感兴趣的:(mongo,db,/,mysql,mongo日期,mongo日期范围,范围查询,数据库)