如何使用MongoDB实现以下功能

时间:2018-06-03 02:26:47

标签: mongodb aggregate-functions

我使用switch语句根据不同的值分配一些文本;这里它返回正确的输出。 现在从上面的输出中,我再次需要使用正则表达式过滤掉一些文档。 有点像“where status likes 'open%'

db.accountMailLog.aggregate([
        {$match:{'$and': [{recipientId: "3003590"}, {recipientType: "2"}
        ]}},
        {$project :
            {
            '_id'          : 0,
            'logCreated'   : '$eventOccurredTime',
            'subject'      : 1,
            'resourceType' : 'email',
            'campaignName' : 1,
            'emailSendDay' : 1,
            'logDate'      : '$eventOccurredTime',
            'sentMethod'   : 'campaign-email',
            'visitorKey'   : '',
            'mediaHash'    : '',
            "status"       : {'$switch' :
                                {'branches' :
                                    [
                                    {'case' : {'$eq' : ['$status','1']},'then' : "delivered"},
                                    {'case' : {'$eq' : ['$status','2']},'then' : "opened"},
                                    {'case' : {'$eq' : ['$status','3']},'then' : "clicked"},
                                    {'case' : {'$eq' : ['$status','4']},'then' : "bounced"},
                                    {'case' : {'$eq' : ['$status','5']},'then' : "unsubscribed"},
                                    {'case' : {'$eq' : ['$status','6']},'then' : "complained"}
                                    ]
                                }
                            }
        }},

]);

谢谢!!!

1 个答案:

答案 0 :(得分:0)

您可以使用Regexp。类似的东西:

"status": open/