2016-06-09 123 views
1

我有這樣的事情下文,

樣本文檔

{ 
    series: [ 
     { scores: { value: 10 } } 
    ] 
} 



$project: { 
    x: { $slice: ['$series', -1] } } 
}, 
{ $project: { x: { scores: 1 } } } 

所以從系列陣列,我想最後一個成員對象,然後我只想得分從那裏提交。其實scores.value,但不知道如何得到這一點。 有沒有辦法將這些結合在一起?

回答

0

您正在使用錯誤的運算符來返回數組中的最後一個對象。您需要$project文檔並使用$arrayElemAt將可設置的最後一個對象返回給變量,使用$let變量運算符,然後使用dot notation來解決「值」字段。

db.collection.aggregate(
    [ 
     { "$project": { 
      "value": { 
       "$let": { 
        "vars": { "score": { "$arrayElemAt": [ "$series", -1 ] } }, 
        "in": "$$score.value" 
       } 
      } 
     }} 
    ] 
)