转: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点

  1. 必须是s开头的,而不能是s在中间
  2. 必须是大小写敏感的
posted @ 2013-04-10 12:26  道以万计  阅读(224)  评论(0编辑  收藏  举报