如何使用基于周nr的汇总来获取月份的第一天和月份的名称。
redux-persist-transform-filters
返回星期数(1、2、22、13)
答案 0 :(得分:0)
假设您有一个名为example
的实体,并且有一个名为closing_date
的字段,其中保存日期值。
现在,我们可以使用聚合了。
db.getCollection('example').aggregate(
[{
$match:{"entity":"example"}
},
{$project:{date:"$closing_date",week:{$week:"$closing_date"}, month:{$month:"$closing_date"},dayOfweek:{$dayOfWeek:"$closing_date"},dayOfmonth:{$dayOfMonth:"$closing_date"},year:{$year:"$closing_date"}}},
{$group:{_id:{year:"$year",week:"$week",month:"$month",dayOfMonth:"$dayOfmonth",dayOfWeek:"$dayOfweek"}}},
{$project:{_id:0,"year":"$_id.year","month":"$_id.month","week":"$_id.week","dayOfWeek":"$_id.dayOfWeek","dayOfMonth":"$_id.dayOfMonth"}}
]
);
输出
让我们假设字段closing_date
拥有值ISODate("2017-10-12T13:09:46.157Z")
然后查询返回:
{
"year" : 2017,
"month" : 10,
"week" : 41,
"dayOfWeek" : 5,
"dayOfMonth" : 12
}
类似地,您可以找到$dayOfYear
,$hour
,$minute
等。这是在mongo-db中执行聚合的方法。
我不确定您是否要求第一部分。
要获取每月的第一天:
db.getCollection('example').aggregate([
{
$project:
{
"closingDate": { $month: "$closing_date" },
}
},
{
$group:
{
"_id": "$closingDate"
}
},
{
$project:
{
"_id": 0,
"month": "$_id",
"Day": { $subtract: [ { $dayOfMonth: "$closingDate" }, 1 ] },
"time_stamp": { $subtract: [ "$closingDate", new Date("1970-01-01") ] }
}
},
{
$project:
{
"month": 1,
"time":
{
$subtract:
[
{ $subtract: [ "$time_stamp", { $mod: [ "$time_stamp", 24 * 60 * 60 * 1000 ] } ] },
{ $multiply: [ "$Day", 24 * 60 * 60 * 1000 ] }
]
}
}
}
])
输出
{
"month": 10,
"time": 1506863386000
}
现在,您可以将此时间戳记转换为日期,然后获得该月的第一天。
注意:您可以使用在线时间戳转换工具进行验证。