如何使用PyMongo对_id字段执行正则$in查询?
在PyMongo中实现Mongo Shell的正则$in查询
直接在$in数组中使用re.compile()生成的正则对象即可,和Mongo Shell中的语法完全对应。以下是可直接运行的实现代码:
import re from pymongo import MongoClient # 连接数据库 client = MongoClient() db = client.your_database # 替换为你的数据库名 collection = db['my-collection'] # 定义与Mongo Shell一致的正则数组 target_regexes = [ re.compile(r'^id0$'), re.compile(r'^id0#spr#'), re.compile(r'^id1$'), re.compile(r'^id1#spr#') ] # 执行查询 results = collection.find({'_id': {'$in': target_regexes}}) # 遍历输出结果 for doc in results: print(doc)
若之前尝试{"$regex": ...}的方式失败,大概率是正则表达式的转义处理问题。使用re.compile()能直接复刻Mongo Shell中的正则逻辑,避免转义失误。
注意事项:
- 必须导入Python的
re模块 - 确保
_id字段为字符串类型,正则查询仅对字符串字段有效 - 正则表达式的锚点
^和$需保持与Mongo Shell中的写法一致,确保匹配精度
内容的提问来源于stack exchange,提问作者Roger Thomas
相关产品推荐
相关产品推荐

