MongoDB-$project操作符根据条件修改字段

在$project中直接使用$cond操作符即可,如下,如果current_operator字段为空或者为空列表,那么就把这个字段展示为["-"]

db.alarm.aggregate([
    // {'$match':{"create_time":{"$gt":ISODate("2021-05-12T15:23:12+08:00"),"$lt":ISODate("2021-12-23T17:51:15.964+08:00")}}},
    {
        '$project': {
            "manage_type_name": 1,
            "manage_sub_type_name": 1,
            "event_status": 1,
            "create_time": 1,
            "current_operator":
            {
                $cond:
                {
                    if: {
                        "$in": ["$current_operator", [null, []]]
                    },
                    then: ["-"],
                    else: "$current_operator"
                }
            }
        }
    }
])

比较奇怪的是,$cond下的$if 语句如果,写成如下的形式,和自己预想的判断逻辑有很大差距,所有的字段都会被展示为["-"],暂时不清楚具体的原因。

 if: { current_operator: { $in: [null, []] } },

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值