使用 Mongodb 聚合如何将数字更改为月份名称

Posted

技术标签:

【中文标题】使用 Mongodb 聚合如何将数字更改为月份名称【英文标题】:Using Mongo aggregation how to change numbers to month name 【发布时间】:2018-09-23 18:25:35 【问题描述】:

我正在尝试这个 mongo db 聚合,我得到了输出,但我的要求是月份名称只显示名称。示例:月份名称:一月,月份名称:二月“请任何人建议我

db.COLLECTION.aggregate([ 
             $match: 
                CREATE_DATE: 
                    $lte:new Date(),
                    $gte: new Date(new Date().setDate(new 
                        Date().getDate()-200)
                    )
                
             ,
             $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
             
       ])
    output:
    
        "_id" : 
            "month" : 4,
            "year" : 2018
        ,
        "year" : 2018,
        "avgofozone" : 16.92,
        "month" : 4
    
    expected output:
    
        "_id" : 
            "month" : April,
            "year" : 2018
        ,
        "year" : 2018,
        "avgofozone" : 16.92,
        "month" : april
    

【问题讨论】:

请显示要分析的文档数据 @Nikhil Savaliya "_id" : ObjectId("5a38d7d5c9790a0cec5f0832"), "ID" : "20170223011505924465000000", "DISTRICT" : "vskp", "STATION" : "APPPCB", "INDUSTRY" : “2”、“TAKEN_DT”:ISODate(“2017-02-23T00:30:00.000Z”)、“一氧化碳”:0.0、“臭氧”:12.69、“PM10”:69.0、“PM2DOT5”:54.0、“二氧化硫” “:11.2,“二氧化氮”:20.11,“FLAG1”:“NA”,“氨”:30.92,“苯”:0.58,“FLAG2”:“NA”, “FLAG3”:“NA”,“FLAG4”:“NA”,“MODULE_ID”:“100-1”,“SUBMODULE_ID”:“100-1”,“SOURCE_OFFICE_ID”:“1000” -1"、"SCREEN_ID":"100-1"、"CREATE_DATE":ISODate("2017-02-23T01:15:05.924Z")、"CREATED_BY":"1000-1"、"DB_IP_ADDRESS":"127.0 .0.1", "CHECK_CONDITION" : "20170223011505924465000000", "RECORD_STATUS" : NumberLong(1), "DATA_FROM" : "VUYI" 请用正确的格式更新问题 @Nikhil Savaliya iam 得到输出:“_id”:“月”:4,“年”:2018 ,“年”:2018,“avgofozone”:16.92,“月”: 4 但需要输出 :"month":4 我想替换 "month":april 就是这样 【参考方案1】:

MongoDB 中的日期数据类型不支持满足您的要求,因此最好的解决方案是创建您自己的集合(例如:“MyMonth”),该集合存储 12 个文档以将月份编号映射到月份名称,如下所示:

    db.MyMonth.insert(
         
             _id: 1,
              "name": "JANUARY"
         
    );
    db.MyMonth.insert(
         
             _id: 2,
             "name": "FEBRUARY"
         
    );
    //...

然后,在您的聚合查询中,使用 $lookup 管道加入“MyMonth”以从月份编号中检索月份名称,如下所示:

    $lookup:
    
       from: "MyMonth",
       localField: "month",
       foreignField: "_id",
       as: "month_data"
    
    //...

【讨论】:

如何在上面的查询中添加 $lookup 请给我建议 @thoai nguyen 如何在上面的查询中添加 $lookup 请给我建议 您可以像这样在最后一个管道之后添加两个管道:..., $lookup: from: "MyMonth", localField: "month", foreignField: "_id", as: " month_data" , $project: _id: 1, year: 1, avgofozone: 1, month: "$month_data.name" ...

以上是关于使用 Mongodb 聚合如何将数字更改为月份名称的主要内容,如果未能解决你的问题,请参考以下文章

将月份编号更改为月份名称

如何在pyspark中将月份名称更改为不同的语言 - 数据框

将月份从名称转换为数字

有没有办法用月份数字而不是月份名称来搜索 SQL 查询?

将月份名称更改为sed awk或批处理中特定行的月份编号

Webpack Module Federation 将共享库的名称更改为数字