MongoDB中15分钟时间间隔的分组结果

MongoDB中15分钟时间间隔的分组结果

我有一个像这样的“身份”系列-

{
    _id: ObjectId("545a0b63b03dbcd1238b4567"),
    status: 1004,
    comment: "Rem dolor ipsam placeat omnis non. Aspernatur nobis qui nisi similique.",
    created_at: ISODate("2014-11-05T11:34:59.804Z")},{
    _id: ObjectId("545a0b66b03dbcd1238b4568"),
    status: 1001,
    comment: "Sint et eos vero ipsa voluptatem harum. Hic unde voluptatibus et blanditiis quod modi.",
    created_at: ISODate("2014-11-05T11:35:02.814Z")}........

我需要得到的结果分组15分钟间隔从收集。


尚方宝剑之说
浏览 1687回答 3
3回答

HUX布斯

我喜欢这里的另一个答案,主要是使用日期数学,而不是聚合日期运算符,这虽然有帮助,但也可能有点模糊。我想在这里补充的唯一件事是,您也可以返回一个Date通过这种方法从聚合框架中获取对象,而不是作为结果的“数值”时间戳。这只是在相同的原则上的一些额外的数学,使用$add:db.collection.aggregate([     { "$group": {         "_id": {             "$add": [                 { "$subtract": [                     { "$subtract": [ "$current_date", new Date(0) ] },                     { "$mod": [                          { "$subtract": [ "$current_date", new Date(0) ] },                         1000 * 60 * 15                     ]}                 ] },                 new Date(0)             ]         },         "count": { "$sum": 1 }     }}])这个Date(0)JavaScript中的结构以较短的形式表示相同的“划时代”日期,因为距EURCH的0毫秒就是时代。但要点是,当使用数字标识符对另一个bson日期对象进行“加法”时,所描述条件的逆值为真,并且最终结果实际上是Date.所有驱动程序都将返回本机Date用这种方法键入他们的语言。

12345678_0001

对于mongodb.version()<3.0来说,更漂亮一些db.collection.aggregate([ &nbsp;&nbsp;&nbsp;&nbsp;{$match:&nbsp;{created_at:{$exists:1}}}, &nbsp;&nbsp;&nbsp;&nbsp;{$group:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_id:&nbsp;{$add:[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$dayOfYear:&nbsp;"$created_at"&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$multiply:&nbsp;[{$year:&nbsp;"$created_at"},&nbsp;1000]} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count:&nbsp;{$sum:&nbsp;1&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}}, &nbsp;&nbsp;&nbsp;&nbsp;{$sort:{_id:-1}}])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB