如何将按$week分组的mongoDB结果转换为日期格式



我想创建一个报告,每周显示小时总数。我使用mongoDB并按$week进行分组。我需要按年份区分周,我的报告需要有一周的第一天和最后一天的日期,而不是周号。这是我的管道。

let pipeline = [
{
$match: {
companyId,
},
},
{
$group: {
_id: {
$week: '$date',
},
},
},
{
$project: {
companyId: '$companyId',
},
},];

这是我的收藏品:

const hoursSchema = mongoose.Schema({
personId: mongoose.Schema.Types.ObjectId,
jobId: Number,
companyId: Number,
name: String,
date: Date,
hours: Number,
});

我最终做的是添加年份,并分别使用一个函数从周和年的数字中提取日期。管道看起来是这样的:

let pipeline = [
{
$match: {
companyId,
},
},
{
$group: {
_id: {
week: { $week: { date: '$date' } },
year: { $year: { date: '$date' } },
name: '$name',
jobTitle: '$jobTitle',
jobId: '$jobId',
companyId: '$companyId',
personId: '$personId',
},
count: { $sum: 1 },
hours: { $sum: '$hours' },
},
},
];

我将用户详细信息放在$group_id中,以提取每个用户的信息。所以每个按我的对象分组的对象现在都有年和周,我可以用它来计算一周的第一天和最后一天的日期。

最新更新