MST

星途 面试题库

面试题:MongoDB $project阶段结合条件判断的数据投影

有一个名为‘products’的集合,文档包含‘product_name’、‘price’、‘category’字段。当‘category’为‘electronics’时,在$project阶段返回‘product_name’、‘price’以及根据价格计算出的折扣价格(如果价格大于1000,折扣10%;否则折扣5%),当‘category’不为‘electronics’时,只返回‘product_name’和‘category’。请写出满足该需求的$project阶段的表达式。
49.9万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
{
    "$project": {
        "product_name": 1,
        "category": 1,
        "price": {
            "$cond": [
                { "$eq": ["$category", "electronics"] },
                1,
                0
            ]
        },
        "discounted_price": {
            "$cond": [
                { "$and": [
                    { "$eq": ["$category", "electronics"] },
                    { "$gt": ["$price", 1000] }
                ]},
                { "$multiply": ["$price", 0.9] },
                {
                    "$cond": [
                        { "$eq": ["$category", "electronics"] },
                        { "$multiply": ["$price", 0.95] },
                        null
                    ]
                }
            ]
        }
    }
}