从没有$project的对象中提取字段MongoDB
嗯,也许这是一个简单的问题,但我在mongoDB文档中没有找到任何关于聚合框架的满意答案 如果我执行的查找会产生一个匹配文档的数组,那么我如何仅投影最后一个元素的字段从没有$project的对象中提取字段MongoDB,mongodb,aggregation-framework,Mongodb,Aggregation Framework,嗯,也许这是一个简单的问题,但我在mongoDB文档中没有找到任何关于聚合框架的满意答案 如果我执行的查找会产生一个匹配文档的数组,那么我如何仅投影最后一个元素的字段 db.collection.aggregate([ { $lookup: { .... some lookup pipeline ...., as: "matchedObjects" } }, { // Here
db.collection.aggregate([
{
$lookup: {
.... some lookup pipeline ....,
as: "matchedObjects"
}
},
{
// Here I get the last Object
$project: {
doc: { $arrayElemAt: [ { $slice: ["$matchedObjects", -1 ] }, 0 ]}
}
},
{
// extract what I want
$project: {
field: "$doc.field"
}
}
])
那么,我如何仅使用第一个$project来实现这一点,您可以使用它捕获临时变量中的最后一个元素,然后引用该变量以获取字段
:
db.collection.aggregate([
{
$project: {
field: {
$let: {
vars: { doc: { $arrayElemAt: [ { $slice: ["$matchedObjects", -1 ] }, 0 ]} },
in: "$$doc.field"
}
}
}
}
])
谢谢,成功了。我没想过这样用$let