在mongo查询中以所选格式投影日期字段

时间:2016-06-07 17:36:55

标签: mongodb mongodb-query aggregation-framework

我不确定是否可以这样做但是我在这里看到有人对此有任何想法。

在我的mongodb查询中,例如,如果我这样做

 db.collection.find({_id:1}, {_id:0, myDt:1})

我得到这样的东西

"myDt" : ISODate("1976-06-27T00:00:00.000Z")

我的问题是我在投影中可以做些什么来将日期作为字符串在这个' yyyy-mm-dd'格式而不是所有ISODate(字符串)?

 db.collection.find({_id:1}, {_id:0, myDt:{do some magic work to get the yyyy-mm-dd back}})

感谢。

1 个答案:

答案 0 :(得分:1)

最好使用客户端处理格式化日期

但是你当然可以通过使用聚合框架$project来完成这些文件。在$project阶段,您需要使用$year$month$dayOfMonth运算符,这些运算符分别将日期的年,月和日作为数字返回。当然要连接您首先需要使用$toLower将这些数字转换为字符串并使用$concat运算符。

db.collection.aggregate(
    [
        { "$project": { 
            "_id": 0, 
            "date": { 
                "$concat": [
                    { "$toLower": { "$year": "$myDt" } }, 
                    "-", 
                    { "$toLower": { "$month": "$myDt" } }, 
                    "-", 
                    { "$toLower": { "$dayOfMonth": "$myDt" } } 
                 ]
            }
        }}
    ]
)

但您可以随时使用$toLower运算符返回字符串日期:

db.collection.aggregate([ { "$project": { "date": { "$toLower": "$myDt" } } } ] )