专栏首页JMCuiMongoDB 日期类型查询

MongoDB 日期类型查询

一、前言

MongoDB 里面的日期类型是没有时区概念的,默认存储的是 ISODate("2018-04-02T13:19:16.418Z") 这种格式的零时区时间,比北京时间晚了八个小时。

工作中遇到了一个问题,怎么查询比当前时间小30秒之内的文档记录呢?

时区问题有关系吗?日期类型要怎么比较?怎么表示当前时间呢?日期要怎么实现加减呢?

二、方案

1、时区问题

其实时区问题并不是一个太需要关注的问题,因为MongoDB 提供了一个Javascript shell 窗口,支持 js 的语法。进行日期类型比较的时候,MongoDB 会自动处理 js 日期类型 和 MongoDB 日期类型间的时区问题。

2、怎么表示当前时间

既然我们已经有了 Javascript shell 窗口,那么表示当前时间不是一件轻而易举的事情了吗?直接一个 new Date() 就搞定了!

3、实现日期加减

有了 js 语法,日期的加减也不是特别难想了吧?

1     var now = new Date();
2     now.setSeconds(now.getSeconds() - 30);

4、实现查询

万事俱备,只欠东风。让我们来看看,最后的MongoDB查询是怎么样的吧?

1      var now = new Date();
2      now.setSeconds(now.getSeconds() - 30);
3      db.driverLocation.find({"uploadTime":{"$gte":now}}).sort({"uploadTime":-1});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringMVC 自定义参数解析器.

    有没有想过像 @RequestParam、@RequestBody 这些注解的工作原理呢?为什么 form 表单、application/json 的参数能够直...

    JMCui
  • NodeJS安装第一个工程.

    一、刚接触Node.js,下载好安装包后,一路Next,安装好后,结构目录如下 ?       在命令行窗口输入node -v 和npm -v ? 二、建立一个...

    JMCui
  • JVM系列十三(运行时栈帧结构).

    栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。每一个栈帧都包括了局部变量表、操作数...

    JMCui
  • 如何用腾讯云打造一款微视频 APP

    本文主要讲解了如何将腾讯云提供的音视频上传下载、万象优图图片存储以及处理(缩放、裁剪、水印)等功能集成到了APP和业务端服务器中,打造一款微视频APP。

    云加创业小助手
  • Elasticsearch基础知识补齐

    前面的一些学习笔记都是简单记录了一下 CURD 和 Mapping, 这篇博文就记录一下 Es 的一些基础知识

    憧憬博客
  • Python生成器对象send()方法用法

    关于生成器基本用法请参考详解Python生成器函数和生成器对象的原理和用法 >>> def f(): yield from 'abcdefg' #使用yie...

    Python小屋屋主
  • Golang调用动态库so

    测试动态库 test_so.h int test_so_func(int a,int b); test_so.c #include "test_so.h" ...

    李海彬
  • 李嘉诚2015汕大演讲:求存者与求成者(震撼人心)

    用户1756920
  • es|路由一个文档到一个分片

    当索引一个文档的时候,文档会被存储到一个主分片中。 Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当...

    heidsoft
  • 高效 DevOps 的7个习惯

    很多人在 DevOps 文化和目标导向上过度纠结。请使用这个指南。 如果你问IT行业的高管,DevOps 对你的工作挑战最大的是哪方面?最近和 DevOps 手...

    DevOps时代

扫码关注云+社区

领取腾讯云代金券