mongodb中使用正则表达式范例(pymongo演示)

2022-05-03 00:00:00 正则表达式 演示 范例

下面演示了mongodb中使用正则表达式进行模糊匹配的方法,如果要使用索引,不是所有的正则查询都能命中索引,需要区别对待。
假定需要查询name中包含s的:

db.customer.find({'name': /.*s.*/i})

pymongo的写法如下:

rexExp = re.compile('.*s.*', re.IGNORECASE)
db.customer.find({'name':rexExp })

或者

db.customer.find({'name': {'$regex':'.*s.*'} })

为提高查询效率,添加索引{'name':1}
测试结果:无法命中索引
要想命中索引,还得改下查询条件,查询必须符合2点
必须是s开头的,而不能是s在中间
必须是大小写敏感的
那么,查询看起来应该是这个样子:

db.customer.find({'name': /^s.*/})

pymongo的写法如下:
python rexExp = re.compile('^s.*') db.customer.find({'name':rexExp })

相关文章