mongodb / javascript:按日期对数据进行分组,对其进行操作,然后显示

时间:2018-08-07 05:58:42

标签: javascript mongodb mongoose aggregation-framework

这是一个示例JSON对象,其中有1000个类似的对象,存储在我的MongoDB集合中。

{ "_id": ObjectId("5b1bb74ffc7ee601c6915939"), "groupId": "-abcde", "applicationId": "avcvcvc", "integration": "web", "Category": "message", "Action": "message", "Type": "newMessage", "Id": "activity", "data": { "test": "good morning" }, "timestamp": 1528543055858.0, "createdAt": ISODate("2018-06-09T11:17:35.868+0000"), "updatedAt": ISODate("2018-06-09T11:17:35.868+0000"), "__v": NumberInt(0) }

此对象是日期为2018-06-09的数据示例。 db中有带有连续日期的对象。我必须获取具有特定日期的数据,并对具有该日期的所有对象执行此操作

db.collection.aggregate([{
    $match: {
      $or: [{
          Type: "on mouse hover click"
        }, {
          Type: "on mouse out"
        },
        {
          Type: "on chat start"
        }, {
          Type: "Load Event"
        }
      ]
    }
  },
  {
    $group: {
      _id: null,
      count: {
        $sum: 1
      }
    }
  }
]);

当调用api时,它应该显示一个特定的日期以及在上面的查询中执行的计算。这应该在所有带有差异的对象上发生。日期。为此,我制作了一个示例架构

let { Schema } = require("mongoose");
let mongoose = require("mongoose");

let dataSchema = Schema({
    date: { type: Date },
    calculation: { type: Number }
});

let NewData = mongoose.model('dataSchema', dataSchema);
module.exports = { NewData };

我该如何实现?我是MongoDB的新手,所以我不太清楚该怎么做。

1 个答案:

答案 0 :(得分:0)

您无法按日期分组,原因是分钟,秒,毫秒等不同

您需要为日期而不是日期时间创建一个项目,日期可以相同但时间不同 然后,您可以进行分组以及您想做什么

3001