我似乎不能得到甚至是最基本的日期查询工作在MongoDB。使用类似这样的文档:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
查询如下所示:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
执行得到0个结果:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
知道为什么不行吗?
作为参考,这个查询是由Spring的MongoTemplate生成的,所以我不能直接控制最终发送到MongoDB的查询。
(注:)
> db.version()
2.4.7
谢谢!
老问题,但仍然是第一个谷歌击中,所以我张贴在这里,所以我发现它再次更容易…
使用Mongo 4.2和一个aggregate():
db.collection.aggregate(
[
{ $match: { "end_time": { "$gt": ISODate("2020-01-01T00:00:00.000Z") } } },
{ $project: {
"end_day": { $dateFromParts: { 'year' : {$year:"$end_time"}, 'month' : {$month:"$end_time"}, 'day': {$dayOfMonth:"$end_time"}, 'hour' : 0 } }
}},
{$group:{
_id: "$end_day",
"count":{$sum:1},
}}
]
)
这个函数将groupby变量作为日期,有时更好的方法是将其作为组件本身。
这是我的文档
"_id" : ObjectId("590173023c488e9a48e903d6"),
"updatedAt" : ISODate("2017-04-27T04:26:42.709Z"),
"createdAt" : ISODate("2017-04-27T04:26:42.709Z"),
"flightId" : "590170f97cb84116075e2680",
"_id" : ObjectId("590173023c488e9a48e903d6"),
"updatedAt" : ISODate("2017-04-28T03:26:42.609Z"),
"createdAt" : ISODate("2017-04-28T03:26:42.609Z"),
"flightId" : "590170f97cb84116075e2680",
现在我想找到每一个27号日期的文档。所以我用了这个....
> db.users.find({createdAt:{"$gte":ISODate("2017-04-27T00:00:00Z"),"$lt":ISODate("2017-04-28T00:00:00Z") }}).count()
result:1
这对我很管用。
我使用robomongo作为mongodb客户端gui,下面为我工作
db.collectionName.find({"columnWithDateTime" : {
$lt:new ISODate("2016-02-28T00:00:00.000Z")}})
On the app side I am using nodejs based driver mongodb(v1.4.3),the application uses datepicker in the ui which gives date like YYYY-mm-dd, this is then appended with default time like 00:00:00 and then given to the new Date() constructor and then supplied to the mongodb criteria object,I think the driver converts the date to ISO date and the query then works and gives desired output, however the same new Date() constructor does not work or show same output on robo mongo,for the same criteria,which is weird,since I used robomongo to cross check my criteria objects.
而默认的cli mongoshell与ISODate和new Date()都能很好地工作