我在下面有类似的内容,
示例文档
{
series: [
{ scores: { value: 10 } }
]
}
$project: {
x: { $slice: ['$series', -1] } }
},
{ $project: { x: { scores: 1 } } }
所以从系列数组中,我想要最后一个成员对象,然后我只想要从中提取分数。实际上得分。值但不确定如何得到它。 有没有办法将这些结合在一起?
答案 0 :(得分:0)
您使用错误的运算符返回数组中的最后一个对象。您需要$project
您的文档并使用$arrayElemAt
使用$let
变量运算符返回您可以设置为变量的最后一个对象,然后使用dot notation来解决"值"字段。
db.collection.aggregate(
[
{ "$project": {
"value": {
"$let": {
"vars": { "score": { "$arrayElemAt": [ "$series", -1 ] } },
"in": "$$score.value"
}
}
}}
]
)