2016-02-25 52 views
2

我想產生一個總的結果,但重命名一些字段:

db.articles.aggregate([ 
    {$match: { 
     "model.lang": "en" 
    }}, 
    {$project: { 
     "_id": 0, 
     "model.title": 1, 
     "model.address_en": "$address", 
     "model.date": { $dateToString: { format: "%Y-%m-%d", date: "$date" } } 
    }} 
]); 

正如你可以看到,我想重新命名「model.title」到「標題」,「model.address_en」到「地址「和」model.date「到」日期「..雖然沒有太多運氣:

{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 
{ "model" : { "date" : null } } 

我在做什麼錯?

回答

4

通過

鑑於 articles

{ "_id" : ObjectId("56cea763d43e3500f6768482"), 
    "name" : "aaa", 
    "model" : { "lang" : "en", 
       "title" : "b", 
       "date" : ISODate("2016-02-25T07:04:03.414Z") 
      }, 
      } 

重命名 「model.title」 到 「標題」, 「model.address_en」 到 「地址」 和 「model.date」 到 「日期」 的文件

db.articles.aggregate([ 
      {$match: {'model.lang': 'en'}}, 
      {$project: { 
          _id: 0, 
          'title': '$model.title', 
          'date': {$dateToString: {format: '%Y-%m-%d', 
                date: '$model.date'}}}}]) 

結果是

{ "date" : "2016-02-25", "title" : "b" } 
{ "date" : "2016-02-25", "title" : "c" } 
+1

在問題中的'「模型」'字段不會是一個陣列,在否則將突出顯示陣列的嘗試在輸出中括號'[]'。所以它實際上只是他們錯誤的「左側」到「右側」部分。 –

+0

@BlakesSeven,謝謝,我會更新我的答案... – zangw