将mongo $ slice运算符与另一个运算符一起使用

时间:2016-06-09 14:50:39

标签: mongodb mongodb-query aggregation-framework

我在下面有类似的内容,

示例文档

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



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

所以从系列数组中,我想要最后一个成员对象,然后我只想要从中提取分数。实际上得分。值但不确定如何得到它。 有没有办法将这些结合在一起?

1 个答案:

答案 0 :(得分:0)

您使用错误的运算符返回数组中的最后一个对象。您需要$project您的文档并使用$arrayElemAt使用$let变量运算符返回您可以设置为变量的最后一个对象,然后使用dot notation来解决"值"字段。

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