如何在 mongo 聚合中将数字转换为月份
how to convert number to month in mongo aggregation
我正在尝试此 mongo 聚合 我得到了输出,但我的要求是获取月份名称。我正在尝试不同类型的聚合仍然没有得到需求输出,任何人都可以帮助我。
db.collection.aggregate([
{ $match: {
CREATE_DATE: {
$lte:new Date(),
$gte: new Date(new Date().setDate(new
Date().getDate()-120)
)
}
} },
{ $group: {
_id:{
month: { $month: "$CREATE_DATE" },
year: { $year: "$CREATE_DATE" }
},
avgofozone:{$avg:"$OZONE"}
} },
{ $sort:{ "year": -1 } },
{ $project: {
year: '$_id.year',
avgofozone: '$avgofozone',
month: '$_id.month',_id:0
} }
])
截至目前的输出:
/* 1 */
{
"year" : 2018,
"avgofozone" : 16.92,
"month" : 4
}
/* 2 */
{
"year" : 2017,
"avgofozone" : 602.013171402383,
"month" : 12
}
预期输出:
/* 1 */
{
"year" : 2018,
"avgofozone" : 16.92,
"month" : APRIL
}
/* 2 */
{
"year" : 2017,
"avgofozone" : 602.013171402383,
"month" : DECEMBER
}
我认为在mongo中不可能直接实现。但是我们可以使用 $let
将数字映射到月份的字符串版本。您可以添加以下内容作为将数字映射到字符串的最后阶段。
{
$addFields: {
month: {
$let: {
vars: {
monthsInString: [, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', ...]
},
in: {
$arrayElemAt: ['$$monthsInString', '$month']
}
}
}
}
}
您可以按需要的任何格式提供月份字符串。例如,我提供了 [, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', ...]
我正在尝试此 mongo 聚合 我得到了输出,但我的要求是获取月份名称。我正在尝试不同类型的聚合仍然没有得到需求输出,任何人都可以帮助我。
db.collection.aggregate([
{ $match: {
CREATE_DATE: {
$lte:new Date(),
$gte: new Date(new Date().setDate(new
Date().getDate()-120)
)
}
} },
{ $group: {
_id:{
month: { $month: "$CREATE_DATE" },
year: { $year: "$CREATE_DATE" }
},
avgofozone:{$avg:"$OZONE"}
} },
{ $sort:{ "year": -1 } },
{ $project: {
year: '$_id.year',
avgofozone: '$avgofozone',
month: '$_id.month',_id:0
} }
])
截至目前的输出:
/* 1 */
{
"year" : 2018,
"avgofozone" : 16.92,
"month" : 4
}
/* 2 */
{
"year" : 2017,
"avgofozone" : 602.013171402383,
"month" : 12
}
预期输出:
/* 1 */
{
"year" : 2018,
"avgofozone" : 16.92,
"month" : APRIL
}
/* 2 */
{
"year" : 2017,
"avgofozone" : 602.013171402383,
"month" : DECEMBER
}
我认为在mongo中不可能直接实现。但是我们可以使用 $let
将数字映射到月份的字符串版本。您可以添加以下内容作为将数字映射到字符串的最后阶段。
{
$addFields: {
month: {
$let: {
vars: {
monthsInString: [, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', ...]
},
in: {
$arrayElemAt: ['$$monthsInString', '$month']
}
}
}
}
}
您可以按需要的任何格式提供月份字符串。例如,我提供了 [, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', ...]