以下是我如何使用 pymongo 从 mongodb 查询数据:
def is_philippine_facebook(self,facebook_user):
is_philippine = False
db_server = self.ConfigSectionMap('db_server')
database_name = db_server['database']
db = self.client[database_name]
cursor = db[collection_name].find({
'isPhilippine':True,
'facebook_user': re.compile('@'+facebook_user, re.IGNORECASE)
})
for document in cursor:
if document is not None:
is_philippine = True
break
return is_philippine
事实上,我想使用不区分大小写
选项查询具有特定facebook_user
的记录。但是,查询返回许多不正确的结果。
例如,如果 facebook_user
为 WWF
,则将返回带有 WWF_XYZ
的记录。
我该如何解决这个问题? 谢谢。
最佳答案
使用以下修复:
re.compile(r'@{0}\b'.format(facebook_user), re.IGNORECASE)
请参阅regex demo .
图案详细信息:
@WWF
- 文字@WWF
\b
- 单词边界(需要字母、数字或_
之外的字符,或@WWF
之后的字符串结尾)
如果 facebook_user
可能包含特殊字符,您需要使用
re.compile(r'(?<!\w)@{0}(?!\w)'.format(re.escape(facebook_user)), re.IGNORECASE)
但是,facebook_user
似乎只包含单词字符,因此在这种情况下单词边界应该足够了。
关于python - 使用不区分大小写的文本查询 pymongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44471387/