您好,登錄后才能下訂單哦!
今天小編給大家分享的是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 數據庫中有一個集合,其中包含一些數據,并希望根據日期(忽略時間)過濾和查找數據。
樣本數據
{ "_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中根據時間過濾進行查詢怎么實現就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。