转:mongodb 正则查询
http://www.cnblogs.com/yaksea/archive/2012/07/05/2578614.html
假定需要查询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在中间
- 必须是大小写敏感的