如何在 PyMongo 中使用 OR 语句和变量赋值?
How to utilize OR statements and variable assignment in PyMongo?
我正在处理推文。我想为每条推文分配品牌名称和广告名称。我在 python 而不是严格意义上的 mongo 工作,因为我想为即将举行的活动自动执行此过程。总的来说,我正在处理超过 70 万条推文。我想尽可能多地在 PyMongo 中工作,这样我的处理时间就可以短而愉快。
以下代码与更广泛的脚本相关,该脚本在此之前收集和聚合推文。这仅与根据正则表达式值分配广告有关。我的问题是我的测试数据库中的所有推文都被更新为 TRUE,即使它们不持有分配的 RE 值。
col.update_many({},
{'$set': {"AdName": 'x'} }
)
col.update_many({"AdName": {"$exists": True}},
[{'$set':
{'AdName':
{"$or":
[{'$eq':[{'text':re.compile('BudLight')},'TestAdName']}]
}
}
}
]
)
我希望看到的事情发生
我正在尝试更新这些推文以根据 or 语句中的 RE 值保留特定的广告名称。之后,我将根据通过此过程分配的广告标题为每条推文分配一个品牌。
我假设我的更新语法可能不正确,但 PyMongo 文档对我尝试做的事情并不是很有帮助。
另外:
PyMongo 不支持条件语句中的 $regex 命令。
我能够更好地理解如何实现这个想法。
我的错误是将条件语句放在更新参数中。 $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'}}]
)
我正在处理推文。我想为每条推文分配品牌名称和广告名称。我在 python 而不是严格意义上的 mongo 工作,因为我想为即将举行的活动自动执行此过程。总的来说,我正在处理超过 70 万条推文。我想尽可能多地在 PyMongo 中工作,这样我的处理时间就可以短而愉快。
以下代码与更广泛的脚本相关,该脚本在此之前收集和聚合推文。这仅与根据正则表达式值分配广告有关。我的问题是我的测试数据库中的所有推文都被更新为 TRUE,即使它们不持有分配的 RE 值。
col.update_many({},
{'$set': {"AdName": 'x'} }
)
col.update_many({"AdName": {"$exists": True}},
[{'$set':
{'AdName':
{"$or":
[{'$eq':[{'text':re.compile('BudLight')},'TestAdName']}]
}
}
}
]
)
我希望看到的事情发生
我正在尝试更新这些推文以根据 or 语句中的 RE 值保留特定的广告名称。之后,我将根据通过此过程分配的广告标题为每条推文分配一个品牌。
我假设我的更新语法可能不正确,但 PyMongo 文档对我尝试做的事情并不是很有帮助。
另外: PyMongo 不支持条件语句中的 $regex 命令。
我能够更好地理解如何实现这个想法。
我的错误是将条件语句放在更新参数中。 $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'}}]
)