2016-06-07 129 views
0

我不確定是否可以完成此操作,但是我在此處發佈以查看任何人對此有任何想法。在mongo查詢中選擇格式的日期字段投影

在我的例如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

最好使用客戶端處理格式化您的日期

但是當然你可以通過使用聚合框架來完成你的文檔。在$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" } } } ]) 
+0

user3100115,我同意你的看法,在客戶端格式化日期是在這種情況下最好的選擇。這就是我們現在正在做的事情,但想到這裏問它。感謝您在這裏顯示彙總查詢的幫助。 – JBone