gpt4 book ai didi

python - pymongo 查询不返回结果

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:36 25 4
gpt4 key购买 nike

我的查询有问题,我正在尝试对多个字段使用 find contains 查询,这是我的代码。如果有任何帮助,我将不胜感激。

def loadContact(search):
myQuery = {'username' : {'$ne' : session['username']},\
'$and' : [{'$or' : [\
{'username' : '/.*' + search + '.*/i'},\
{'surname' : '/.*' + search + '.*/i'},\
{'firstName' : '/.*' + search + '.*/i'},\
{'email' : '/.*' + search + '.*/i'},\
{'company' : '/.*' + search + '.*/i'}]}]}
cursor = db.users.find(myQuery)
payload = []
content = {}
for doc in cursor:
#this is mocked up code for this question so you can see more clearly
content = {'username' : cursor[0], 'firstName' : cursor[1]}
payload.append(content)

return payload

值得注意的是循环不迭代,如果不迭代,循环的内容现在并不重要。

因为我需要任何字符串值的具体值,这里是任何字符串的具体值:

session['username'] = "username" 
loadContact(): loadContact("string")

最佳答案

带有斜杠的字符串不会像您在这里期望的那样被解释为定界正则表达式。您需要使用 $regex运算符或使用 Python 正则表达式对象。您也不需要在此处使用 $and,因为所有术语都是隐式“与”的。

myQuery = {'username' : {'$ne' : session['username']},
'$or' : [
{'username' : {'$regex' : search, '$options': 'i'}},
{'surname' : {'$regex' : search, '$options': 'i'}},
{'firstName' : {'$regex' : search, '$options': 'i'}},
{'email' : {'$regex' : search, '$options': 'i'}},
{'company' : {'$regex' : search, '$options': 'i'}}]}

关于python - pymongo 查询不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55909767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com