gpt4 book ai didi

mongodb - 如何根据日期过滤/查找 MongoDB 中的记录

转载 作者:行者123 更新时间:2023-12-03 02:27:46 25 4
gpt4 key购买 nike

我在 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")}});

最佳答案

解答:只需通过字符串比较即可查询。

First, ensure index on startTime column

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 中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33528347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com