我的 daily
收藏有如下文档:
..
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "ED", "san" : 7046.25, "izm" : 1243.96 }
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "UA", "san" : 0, "izm" : 0 }
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "PAL", "san" : 0, "izm" : 169.9 }
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "PAL", "san" : 0, "izm" : 0 }
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "CTA_TR", "san" : 0, "izm" : 0 }
{ "date" : ISODate("2013-01-04T00:00:00Z"), "vid" : "CAD", "san" : 0, "izm" : 169.9 }
{ "date" : ISODate("2013-01-04T00:00:00Z"), "vid" : "INT", "san" : 0, "izm" : 169.9 }
...
我省略了 _id 字段以节省空间。 我的任务是“获取过去 15 天内的所有文件”。如您所见,我需要以某种方式:
- 获取 15 个不同的日期。最新的应该作为集合中的最新文档(我的意思是今天的日期不是必需的,它只是基于 date 字段的集合中的最新文档)和最旧的文档。 . 好吧,也许没有必要严格定义查询中最旧的一天,我需要的是从最新一天开始的某种 top15,如果你知道我的意思的话。就像 15 独特的天。
- db.daily.find() 在 15 天范围内具有 date 字段的所有文档。
结果,我应该会在 15 天内看到所有文档,从最新的集合开始。
最佳答案
我刚刚针对您的数据样本测试了以下查询,它运行良好:
db.datecol.find(
{
"date":
{
$gte: new Date((new Date().getTime() - (15 * 24 * 60 * 60 * 1000)))
}
}
).sort({ "date": -1 })
关于mongodb - 查找最近 n 天内的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15572607/