











假定需要查询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点
那么,查询看起来应该是这个样子:
db.customer.find({'name': /^s.*/})
pymongo的写法如下:
rexExp = re.compile('^s.*')
db.customer.find({'name':rexExp })
omg,看来单靠mongodb是很难满足实际的应用场景,所以还是另外考虑其它搜索引擎做为全文索引的补充吧,lucene系列(solr,elasticSearch)或sphinx都可以考虑下
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。