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时间过滤查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MongoDB中强大的统计框架Aggregation使用实例解析
这篇文章主要介绍了MongoDB中强大的统计框架Aggregation使用实例解析,文中举了Python和Java使用Aggregation的数据统计例子进行讲解,需要的朋友可以参考下2016-01-01Mongodb实现的关联表查询功能【population方法】
这篇文章主要介绍了Mongodb实现的关联表查询功能,结合实例形式较为详细的分析了population方法实现关联表查询的原理与相关操作技巧,需要的朋友可以参考下2017-07-07
最新评论