首页 > 解决方案 > $project: 是否可以在一个阶段访问表达式结果的属性?

问题描述

有没有什么方法可以在一个$project阶段进行以下操作?

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

标签: mongodbaggregation-framework

解决方案


您需要$let运算符:

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

蒙戈游乐场


推荐阅读