mongodb中根据时间过滤进行查询的操作方法

目录
  • mongodb中简单的根据时间过滤进行查询
  • 补充:如何根据日期过滤/查找MongoDB中的记录
    • 问题:如何根据日期过滤/查找MongoDB中的记录
    • 解答

mongodb中简单的根据时间过滤进行查询

目的:查询当某天的文档信息

db.getCollection('test').find
({ "name" : { "$regex" : "王" },
     "is_history" : 0,
     "adddate":{"$gte":ISODate("2018-01-02T00:00:00Z"),"$lte":ISODate("2018-01-03T00:00:00Z")}
},
{
   name:1,adddate:1,sex:1,certcode:1,certnumber:1,istomysql:1
}
)

mongodb的语法,第一个大括号里面是:表示过滤条件

第二个大括号里面是 :控制显示的字段

里面有一个adddate这个过滤条件是如何按照时间来进行过滤查找$gte是大于等于 $lte是小于等于

补充:如何根据日期过滤/查找MongoDB中的记录

问题:如何根据日期过滤/查找MongoDB中的记录

我在 MongoDB 数据库中有一个集合,其中包含一些数据,并希望根据日期(忽略时间)过滤和查找数据。

样本数据

{
  "_id" : ObjectId("563a38173c2ab9248c02d89e"),
  "jobId" : "oAEKMcCIJRIAAAFQbrAR6NDd",
  "jobName" : "CheckSessions",
  "jobDesc" : "Checks and deletes expired session data",
  "jobType" : "Job",
  "startTime" : "2015-11-04 00:00:01",
  "endTime" : "2015-11-04 00:00:01",
  "domainName" : "root",
  "recurrencePeriod" : "60",
  "recurrencePeriodDesc" : "HOURS(1)"
}
{
  "_id" : ObjectId("563a38173c2ab9248c02d89f"),
  "jobId" : "C6wKMcCIJXoAAAFQm78R6NCm",
  "jobName" : "CheckSessions",
  "jobDesc" : "Checks and deletes expired session data",
  "jobType" : "Job",
  "startTime" : "2015-11-03 23:00:00",
  "endTime" : "2015-11-03 23:00:01",
  "domainName" : "root",
  "recurrencePeriod" : "60",
  "recurrencePeriodDesc" : "HOURS(1)"
}

我使用以下命令来获取大于特定日期的数据,但它没有给我任何结果。 startTime 和 endTime 都是 EST 格式。不知道我错过了什么。请指导。

db.jobs.find({"startTime" : { $gt : new Date("2015-11-03")}});

解答

答:可以简单的通过字符串比较来查询。

首先,确保 startTime 列上的索引

db.test.ensureIndex({startTime:1})

以下命令在_id:ObjectId("563a38173c2ab9248c02d89f")示例中找到您的第二个对象

db.test.find({
    startTime: {
        $gte: '2015-11-03 00:00:00',
        $lt:  '2015-11-04 00:00:00'
    }
}).pretty()

通过在我们的查询上运行 explain(),我们可以看到索引实际上正在使用中:

db.test.find({startTime:{$gte:'2015-11-03 00:00:00', $lt:'2015-11-04 00:00:00'}}).explain()
{
    "cursor" : "BtreeCursor startTime_1",
    "isMultiKey" : false,
    "n" : 1,
    "nscannedObjects" : 1,
    "nscanned" : 1,
    "nscannedObjectsAllPlans" : 1,
    "nscannedAllPlans" : 1,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "millis" : 0,
    "indexBounds" : {
        "startTime" : [
            [
                "2015-11-03 00:00:00",
                "2015-11-04 00:00:00"
            ]
        ]
    },
    "server" : "Jaans-MBP.home:27017"
}

我的建议仍然是遵循最佳实践并以正确的日期格式存储您的日期字段,例如

"startTime" : ISODate("2016-05-02T00:00:02Z")

在 MongoDB shell 中,您只需通过

> db.test.insert({startTime:new Date()})
> db.test.find()
// results
{ "_id" : ObjectId("563a49d63b1f1b7df0ebc4f5"), "startTime" : ISODate("2015-11-04T18:09:26.613Z") }

到此这篇关于mongodb中简单的根据时间过滤进行查询的文章就介绍到这了,更多相关mongodb时间过滤查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MongoDB批量将时间戳转为通用日期格式示例代码

    前言 时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间.本文将详细介绍MongoDB批量将时间戳转为通用日期格式的相关内容,下面话不多说了,来一起看看详细的介绍吧 1,官网提供的MONGODB遍历脚本: 官方文档地址:https://docs.mongodb.org/manual/tutorial/remove-documents/ >var arr = ["ab","cd","ef"] >var show =

  • 深究从MongoDB的ObjectId中获取时间信息

    MongoDB默认使用_id字段作为主键,类型为ObjectId.ObjectId的生成有一定的规则,详情可以查看这篇文章 - MongoDB深究之ObjectId.如果你在写入数据库的时候忘记写入创建时间,不用担心,完全可以通过_id字段的值来还原当时的时间.看下面的mongodb script脚本: db.getCollection('fees').find({}).forEach(function(item){ var _str = item._id.toString().substr(1

  • Mongodb 如何将时间戳转换为年月日日期

    目录 Mongodb将时间戳转换为年月日日期 MongoDB中的日期查询的坑 Mongodb将时间戳转换为年月日日期 使用dateToString 方法进行转换 并且通过format指定转换日期格式         Integer userId=aaa;         GroupOperation groupOperation = Aggregation.group("day").sum("money").as("todayIncome").c

  • mongodb如何对文档内数组进行过滤的方法步骤

    本文介绍了mongodb如何对文档内数组进行过滤的方法步骤,分享给大家,具体如下: mongodb文档内包含数组,需要将数组中符合条件的数据过滤出来并返回结果集,可以用两种方式来查询group或filter. 数据源: { "_id" : ObjectId("5bbcc0c9a74db9804e78a157"), "uid" : "1000001", "name" : "zhangsan"

  • MongoDB存储时间时差问题的解决方法

    前言 MongoDB存储时间类型数据时,都是先转换为UTC时间,然后存储到数据库中,当我们取出存储的时间时,就会出现时差的问题. 比如我们用的北京时间,读取到的数值就会看到比当前时间少了8个小时,难道说我们在每次读取的时候都要单独处理一下时间吗,这就比较麻烦.其实,我们可以在存储的时候进行相应的处理,只需使用getTimezoneOffset()和toISOString()函数. 需要了解的概念: 格林威治时间 格林威治子午线上的地方时,或零时区(中时区)的区时叫做格林威治时间,也叫世界时.(更

  • 详解MongoDB中创建集合与删除集合的操作方法

    创建集合:createCollection() 方法 MongoDB db.createCollection(name, options) 是用来创建集合. 语法: 基本的 createCollection() 命令语法如下: db.createCollection(name, options) 在命令中, name 是要创建的集合的名称. Options 是一个文件,用于指定配置的集合 参数 类型 描述 Name String 要创建的集合名称 Options Document (可选)指定有

  • mongodb中按天进行聚合查询的实例教程

    前言 最近在写项目的时候遇到一个问题,使用mongodb记录了用例的执行结果,但是在时间的记录上使用的是date格式,现在有一个需求,以天为单位,统计一下每天成功的用例和失败的用例,说到统计,肯定是要用到聚合查询,但是如果以date格式的时间为group依据,那么等同于没有分组,因为在记录用例的时间几乎不可能同时,今天查阅了一下相关文档,可以使用mongodb的$dateToString命令来完成这个需求 问题来源 假如我们以如下的数据 /* 1 */ { "_id" : Object

  • Go 在 MongoDB 中常用查询与修改的操作

    以下所有例子中结构定义如下: type User struct { Id_ bson.ObjectId `bson:"_id"` Name string `bson:"name"` Age int `bson:"age"` JoinedAt time.Time `bson:"joined_at"` Interests []string `bson:"interests"` Num []int `bson:&

  • 使用aggregate在MongoDB中查询重复数据记录的方法

    MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*). aggregate() 方法 MongoDB中聚合的方法使用aggregate(). 语法 aggregate() 方法的基本语法格式如下所示: >db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION) 我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象.正是由于这一特性,我们

  • 在Django中动态地过滤查询集的实现

    目录 简介 开始使用 数据准备 创建视图 创建URL 创建模板 创建客户端脚本 结语 简介 要建立一个允许过滤和分页的列表页,你必须让一些独立的东西一起工作.Django的对象关系映射器(ORM)和内置的分页类使开发者在不了解如何处理数据库和SQL的情况下,也能轻松地提高工作效率.在本指南中,你将学习如何使用AJAX动态地过滤查询集. 在本文的例子中,我采用了Spotify上按国家划分的前50首歌的数据集.你也可以从这里下载同样的数据集.像往常一样,本指南中使用的代码可以在GitHub上找到.你

  • MongoDB中MapReduce的使用方法详解

    前言 玩过Hadoop的小伙伴对MapReduce应该不陌生,MapReduce的强大且灵活,它可以将一个大问题拆分为多个小问题,将各个小问题发送到不同的机器上去处理,所有的机器都完成计算后,再将计算结果合并为一个完整的解决方案,这就是所谓的分布式计算.本文我们就来看看MongoDB中MapReduce的使用. 打算用mongodb mapreduce之前一定要知道的事!!! mapreduce其实是分批处理数据的,每一百次重新reduce处理,所以到reduce里的数据如果是101条,那就会分

  • MongoDB中哪几种情况下的索引选择策略

    目录 一.MongoDB如何选择索引 二.数据准备 三.正则对index的使用 四.$or从句对索引的利用 五.sort对索引的利用 六.搜索数据对索引命中的影响 总结 一.MongoDB如何选择索引 如果我们在Collection建了5个index,那么当我们查询的时候,MongoDB会根据查询语句的筛选条件.sort排序等来定位可以使用的index作为候选索引:然后MongoDB会创建对应数量的查询计划,并分别使用不同线程执行查询计划,最终会选择一个执行最快的index:但是这个选择也不是一

  • MongoDB中连接字符串的编写

    MongoDB数据库与传统的关系型数据库相比,它具有操作简单.完全免费.源码公开等特点,这使MongoDB产品广泛应用于各种大型门户网站和专业网站.由于MongoDB连接并不支持HTTP协议,所有你不能直接通过浏览器访问MongoDB,下面详细介绍MongoDB中连接字符串的编写 一.MongoDB连接字符串常用格式 复制代码 代码如下: mongodb://[username:password@]host1[:port1][,host2[:port2],-[,hostN[:portN]]][/

  • MongoDB中ObjectId的误区及引起的一系列问题

    近期对两个应用进行改造,在上线过程中出现一系列问题(其中一部分是由于ObjectId误区导致的) 先来了解下ObjectId: TimeStamp 前 4位是一个unix的时间戳,是一个int类别,我们将上面的例子中的objectid的前4位进行提取"4df2dcec",然后再将他们安装十六进制 专为十进制:"1307761900",这个数字就是一个时间戳,为了让效果更佳明显,我们将这个时间戳转换成我们习惯的时间格式(精确到秒) $ date -d '1970-01

随机推荐

其他