Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 默认createdAt时间戳中的MongoDB Mongoose按日期分组_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 默认createdAt时间戳中的MongoDB Mongoose按日期分组

Javascript 默认createdAt时间戳中的MongoDB Mongoose按日期分组,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有一个叫Session的模型。它具有id、设备和Mongoose默认时间戳。是这样的 { _id: 5da977e431e58d4e7fc1da1c, device: 'Galaxy M10', createdAt: 2019-10-18T08:29:24.498Z, updatedAt: 2019-10-18T08:32:10.768Z, } 我想按createdAt日期将此会话分组。所以我试过这个 const data = await db.Sess

我有一个叫Session的模型。它具有id、设备和Mongoose默认时间戳。是这样的

{
    _id: 5da977e431e58d4e7fc1da1c,
    device: 'Galaxy M10',
    createdAt: 2019-10-18T08:29:24.498Z,
    updatedAt: 2019-10-18T08:32:10.768Z,

  }
我想按createdAt日期将此会话分组。所以我试过这个

const data = await db.Session.aggregate([
      { $match: { createdAt: { $gte: date } } },
      {
        $group: {
          _id: "$createdAt" ,
          count: { $sum: 1 }
        }
      }
    ]);
我得到的结果是

{ _id: 2019-10-17T11:32:49.346Z, count: 1 },
  { _id: 2019-10-18T07:14:45.695Z, count: 1 },
  { _id: 2019-10-17T10:49:35.434Z, count: 1 },
  { _id: 2019-10-18T08:17:05.999Z, count: 1 },
  { _id: 2019-10-17T09:56:53.574Z, count: 1 },
  { _id: 2019-10-18T07:14:15.154Z, count: 1 },
  { _id: 2019-10-18T07:07:19.346Z, count: 1 },
  { _id: 2019-10-18T07:13:57.720Z, count: 1 },
  { _id: 2019-10-17T13:09:17.721Z, count: 1 },
  { _id: 2019-10-18T07:31:59.900Z, count: 1 },
  { _id: 2019-10-18T08:29:24.498Z, count: 1 },
  { _id: 2019-10-18T08:05:54.339Z, count: 1 }
我的预期结果是

  { _id: 2019-10-18, count: 8 },
  { _id: 2019-10-17, count: 4 },

如果这是在SQL上,而不是在
groupbycreatedat
上,我会
groupbydate(createdAt)
。但是在MongoDB中我如何做到这一点呢?

您可以通过从日期中提取“dayOfMonth”、“month”和“year”并按三者进行分组来做到这一点。查询将变为:

db.Session.aggregate([
      { $match: { createdAt: { $gte: date } } },
      { $project: { dayOfMonth: { $dayOfMonth: $date },
                     month: { $month: $date },
                     year: { $year: $date },
     }
       },
      {
        $group: {
          _id: {    
               year: $year,
               month: $month,
               dayOfMonth: $dayOfMonth                
            } ,
          count: { $sum: 1 }
        }
      }
    ]);

它不起作用。错误是什么?这不是正确的答案,就像他询问输出一样…类似的…db.getCollection('db')。聚合([{$match:{createdAt:{$gte:date}},{$project:{yearMonthDayUTC:{$dateString:{format:'%Y-%m-%d',date date:$createdAt:}}},{$group:{id:“$yearMonthDayUTC”,计数:{$sum:1}}}]);您是否找到了有效的解决方案?