$project:是否可以仅在一个阶段中访问表达式结果的属性?

Ism*_*ael 5 mongodb aggregation-framework

$project有没有什么办法可以只在一个阶段进行下面的操作呢?

db.getCollection('users').aggregate([
    {
        $project : {
            firstEmail : { $arrayElemAt : ["$emails", 0] }
        }
    },
    {
        $project : {
            domain : "$firstEmail.domain"
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

mic*_*ckl 3

您需要$let运算符:

db.getCollection('users').aggregate([
    {
        $project : {
            domain : {
                $let: {
                    vars: { firstEmail: { $arrayElemAt : ["$emails", 0] } },
                    in: "$$firstEmail.domain"
                }
            }
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

蒙戈游乐场