gpt4 book ai didi

mongodb - 使用 $or 和 $regex 的 PyMongo find() 查询

转载 作者:行者123 更新时间:2023-12-05 01:42:15 24 4
gpt4 key购买 nike

有一个 MongoDB 文档集合,包含有关书籍的信息。

我需要使用以下条件查找文档:

(header 包含substring)或(author 包含substring)

在 mongo shell 中,我正在使用这个查询,它工作得很好:

db.books.find({$or: [{author: {$regex: /.*substring.*/i}}, {header: {$regex: /.*substring.*/i}}]})

但是我无法让它在 PyMongo 中工作。

这是我的代码:

search = 'substring'
search_request = {
'$or':
[
{'author': {'$regex': f"/.*{search}.*/", '$options': 'i'}},
{'header': {'$regex': f"/.*{search}.*/", '$options': 'i'}}
]
}
cursor = self.books.find(search_request)

它什么都不返回。

我正在使用 Python 3.7.0、PyMongo 3.7.1、MongoDB 服务器 3.2.11。

最佳答案

/pattern/ 语法是用于创建正则表达式的 Javascript 文字语法。

在 Python 中,可以不使用正斜杠来编写相同的内容。例如

search_request = {
'$or':
[
{'author': {'$regex': f".*{search}.*", '$options': 'i'}},
{'header': {'$regex': f".*{search}.*", '$options': 'i'}}
]
}

如果你想成为惯用的并创建一个正则表达式对象。您可以使用相同的结果执行此操作:

import re

search = "substring"
search_expr = re.compile(f".*{search}.*", re.I)

search_request = {
'$or': [
{'author': {'$regex': search_expr}},
{'header': {'$regex': search_expr}}
]
}

关于mongodb - 使用 $or 和 $regex 的 PyMongo find() 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005155/

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