mongodb - 查找最近 n 天内的所有文档

标签 mongodb

我的 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 天内的所有文件”。如您所见,我需要以某种方式:

  1. 获取 15 个不同的日期。最新的应该作为集合中的最新文档(我的意思是今天的日期不是必需的,它只是基于 date 字段的集合中的最新文档)和最旧的文档。 . 好吧,也许没有必要严格定义查询中最旧的一天,我需要的是从最新一天开始的某种 top15,如果你知道我的意思的话。就像 15 独特的天。
  2. 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/

相关文章:

c# - 如何在数组.NET驱动程序中的项目属性上创建MongoDB MultiKey索引

javascript - meteor 用户属性未定义

java - 无法在 Mongodb 中找到与 java 中的确切日期匹配的文档

entity-framework - Automapper 缺少类型映射配置或不支持的映射

java - 使用 mongoDB 的 Spring 启动返回 NullPointerException

MongoDB、NUMA 硬件、页面错误但有足够的 RAM 用于工作集、touch 命令或 vmtouch/dd 未加载到内存中

node.js - Mongoose 中的多文档更新插入

mongodb - Cassandra、Membase、Hadoop、MongoDB、RDBMS等如何选择?

mongodb - 如何从集群外访问 Kubernetes 中的 MongoDB

mongodb - Mongo聚合查询计算多个计算值