小编Whn*_*ife的帖子

MongoDB - 查询过去几小时内创建的所有文档,并按分钟分组?

通过阅读各种文章,我相信这应该是可能的,但我不确定从哪里开始。

这就是我想要做的:

我想运行一个查询,它在过去一小时内找到所有文档 createAt,并按分钟对所有文档进行分组,并且由于每个文档都有一个推文值,例如 5、6 或 19,因此将它们加起来这些分钟,并提供了一个总和。

以下是该集合的示例:

{
  "createdAt": { "$date": 1385064947832 },
  "updatedAt": null,
  "tweets": 47,
  "id": "06E72EBD-D6F4-42B6-B79B-DB700CCD4E3F",
  "_id": "06E72EBD-D6F4-42B6-B79B-DB700CCD4E3F"
}
Run Code Online (Sandbox Code Playgroud)

这可以在 mongodb 中做到吗?

@zero323 - 我首先尝试像这样对最后一个小时进行分组:

db.tweetdatas.group( {
   key: { tweets: 1, 'createdAt': 1 },
   cond: { createdAt: { $gt: new Date("2013-11-20T19:44:58.435Z"), $lt: new Date("2013-11-20T20:44:58.435Z") } },
   reduce: function ( curr, result ) { },
   initial: { }
} )
Run Code Online (Sandbox Code Playgroud)

但这只是返回时间范围内的所有推文,这在技术上是我想要的,但现在我想按每分钟对它们进行分组,并将每分钟的推文总和相加。

@almypal

根据您的建议,这是我正在使用的查询:

db.tweetdatas.aggregate(
    {$match:{ "createdAt":{$gt: "2013-11-22T14:59:18.748Z"}, }},
    {$project: { "createdAt":1, "createdAt_Minutes": { $minute : "$createdAt" }, …
Run Code Online (Sandbox Code Playgroud)

mongodb

5
推荐指数
1
解决办法
8459
查看次数

标签 统计

mongodb ×1