Как добиться следующего с помощью MongoDB - PullRequest
0 голосов
/ 03 июня 2018

Я использовал оператор 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 голосов
/ 03 июня 2018

Вы можете использовать Regexp.Что-то вроде:

"status": open/
...