MongoDB $addFields判断嵌套字段存在报错及缺失值赋值空串方案
MongoDB聚合管道colors.k字段处理方案
你之前的写法报错的核心原因是:$exists属于MongoDB查询操作符,无法直接在聚合表达式中使用,聚合场景下判断字段是否存在、值为null,可使用$ifNull运算符实现。
以下是可直接运行的正确实现代码:
{ "$addFields": { "colors_field": { "r": "$colors.r", "g": "$colors.g", "b": "$colors.b", "k": { "$cond": { "if": { "$eq": [ { "$ifNull": [ "$colors.k", "" ] }, "" ] }, "then": "", "else": "$colors.k" } } } } }
逻辑说明:
$ifNull会自动覆盖colors.k字段缺失、值为null两种场景,满足这两种情况时直接返回默认值空字符串- 再通过等值判断覆盖
colors.k值本身为空字符串的场景 - 所有符合异常条件的情况最终都返回空字符串,否则保留原有
colors.k的值,完全匹配需求。
内容的提问来源于stack exchange,提问作者pedro
相关产品推荐
相关产品推荐

