MongoDb If和or statement Issue

时间:2017-06-27 13:14:41

标签: mongodb

"$redact": {
   "$cond": {
     "if": {
       "$eq": [ { "$arrayElemAt": [ "$messages.type", -1 ] }, "A" ]
     },
     "then": "$$KEEP",
     "else": "$$PRUNE"
   }
}

在上面的代码中,我需要在if语句中添加另外2个条件但不能添加它们。 即(messages.type ='A'或messages.type ='D')&& (messages.sender = 61)

请帮忙

1 个答案:

答案 0 :(得分:0)

您可以$cond使用$and,如下所示:

{$cond : [{$and : [{$eq : [1,1]},{$eq : [2,2]},{$eq : [3,3]}]},"yes","no"]}

返回"是"

{$cond : [{$and : [{$eq : [2,1]},{$eq : [2,2]},{$eq : [3,3]}]},"yes","no"]}

返回"否"

编辑:

根据OP中的查询(注意这是未经测试的):

"$redact":{
    $cond : [
        {
            $and : [
                {
                    $or : [
                        {
                            $eq : [
                                "$messages.type",
                                "A"
                            ]
                        },
                        {
                            $eq : [
                                "$messages.type",
                                "D"
                            ]
                        },
                    ]
                },
                {
                    $eq : [
                        "$messages.sender",
                        61
                    ]
                }
            ]
        },
        "$$KEEP",
        "$$PRUNE"
    ]
}