Sequelize.js 如何使用sequelize count with group来计算组的总数
我有一些数据在字段中创建了一个Sequelize.js 如何使用sequelize count with group来计算组的总数,sequelize.js,Sequelize.js,我有一些数据在字段中创建了一个。我编写了一个sequelizefindAll查询,成功地将在日期创建的\u分组,这些日期发生在同一天(忽略小时、分钟、秒)。然后我返回该列表的结果.length,以获得唯一天数的总数(这是我的最终目标)。但是,我想知道我是否可以使用sequelizecount方法返回唯一天数的总数,而不是使用findAll然后返回result.length 我并没有尝试太多,因为我只是在学习sequelize,有点不知所措。我也得到了我想要的结果,但我希望找到一种使用count而
。我编写了一个sequelizefindAll
查询,成功地将在
日期创建的\u分组,这些日期发生在同一天(忽略小时、分钟、秒)。然后我返回该列表的结果.length
,以获得唯一天数的总数(这是我的最终目标)。但是,我想知道我是否可以使用sequelizecount
方法返回唯一天数的总数,而不是使用findAll
然后返回result.length
我并没有尝试太多,因为我只是在学习sequelize,有点不知所措。我也得到了我想要的结果,但我希望找到一种使用count
而不是findAll
的方法
const start = moment().subtract(9, 'months').format();
const end = moment().format();
const results = await models.route.unscoped().count({
attributes: [[db.literal(`DATE("created_at")`), "date"]],
group: [db.literal(`DATE("created_at")`), "date"],
where: {
created_at: {
$between: [start, end]
}
},
raw: true
})
预期结果:sequelize查询的结果返回一个#,对应于找到的唯一天数的总和。
实际结果:当前查询结果返回一个包含所有唯一日期的数组,这使得我必须使用results.length
来获取唯一日期的总数。如果将db.literal移动到col属性,应该可以使用。。。大致:
results = await models.route.unscoped().count({
col : db.fn('DATE', db.col('created_at')),
distinct : true,
where : // ...whatever...
});
。。。但当我测试时,col似乎必须是一列。。。不是函数结果。但是,您可以使用findAll()使其工作,大致如下:
results = await models.route.unscoped().findAll({
attributes: [[Sequelize.literal('COUNT (DISTINCT (DATE(created_at)))'), 'myCount']],
where : // ...whatever...
});