Как использовать операторы OR и присваивание переменных в PyMon go? - PullRequest
0 голосов
/ 11 января 2020

Я работаю с твитами. Я хотел бы назначить названия брендов и рекламы для каждого твита. Я работаю в python, а не строго в понедельник go, потому что я хочу автоматизировать этот процесс для предстоящего события. В целом, я обрабатываю более 700 тысяч твитов. Я хотел бы поработать в PyMon go как можно больше, чтобы мое время обработки могло быть коротким и приятным.

Следующий код связан с гораздо более широким сценарием, который собирает и объединяет твиты до этого момента. Это связано только с назначением рекламы на основе значений регулярного выражения. Моя проблема в том, что все твиты в моем тестовом БД обновляются как ИСТИНА, даже если они не содержат выделенное значение RE.

col.update_many({},
                {'$set': {"AdName": 'x'} }
                )

col.update_many({"AdName": {"$exists": True}},
                [{'$set':
                    {'AdName':
                        {"$or":
                        [{'$eq':[{'text':re.compile('BudLight')},'TestAdName']}]
                        }
                    }
                  }
                ]
                )

То, что я хотел бы видеть происходящим

Я пытаюсь обновить эти твиты, чтобы они содержали определенное c имя объявления на основе значений RE в заявлении или. После этого я назначу марку каждому твиту на основе заголовков объявлений, назначенных в ходе этого процесса.

Я предполагаю, что мой синтаксис обновления может быть неправильным, но документация PyMon go - это еще не все. полезно в отношении того, что я пытаюсь сделать.

ТАКЖЕ: PyMon go не поддерживает команды $ regex в условных выражениях.

1 Ответ

0 голосов
/ 17 января 2020

Мне удалось лучше понять, как реализовать эту идею.

Моя ошибка заключалась в размещении условного выражения в параметре обновления. Функция $ or лучше работает в функции фильтра update_many. После того, как фильтр удовлетворен, я могу адекватно обновить AdTitle.

# Avengers Endgame
col.update_many(
                {'$or' :
                        [
                         {'text': { '$regex' : 'avengers', '$options' : 'i'}},
                         {'text': { '$regex' : 'Avengers', '$options' : 'i'}},
                         {'text': { '$regex' : 'Endgame', '$options' : 'i'}},
                         {'text': { '$regex' : 'endgame', '$options' : 'i'}},
                         {'text': { '$regex' : 'avengers endgame', '$options' : 'i'}},
                        ]
                },
                  [{'$set':{'AdTitle':'Avengers Endgame'}}]
                 )
...