惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
D
Docker
J
Java Code Geeks
L
LangChain Blog
Microsoft Security Blog
Microsoft Security Blog
The GitHub Blog
The GitHub Blog
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
月光博客
月光博客
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
Google DeepMind News
Google DeepMind News
腾讯CDC
罗磊的独立博客
U
Unit 42
爱范儿
爱范儿
Vercel News
Vercel News
MyScale Blog
MyScale Blog

博客园 - yaksea

APScheduler: standalone vs daemonic 一句话解释jquery中offset、pageX, pageY、position、scrollTop, scrollLeft的区别 PhoneGap源代码下载地址 python mysql 库的安装 windows环境下PYTHONPATH的设置 Eclipse+pydev2.2+python2.7 中文乱码问题 雷军:互联网创业的葵花宝典 什么是node.js 对python元类概念的理解 设置Django,在Eclipse+PyDev环境中开发Django应用 Python的模块、包等概念的理解 Python下划线与命名规范 Django如何进行数据访问查询 Django IDE 开发环境的搭建 在Eclipse下如何安装插件 使用Django如无到有11步快速构建Web应用 如何使用blog客户端 Apache如何添加虚拟目录 Zend Studio下的PHP代码调试
mongodb正则查询使用须知
yaksea · 2012-07-05 · via 博客园 - yaksea

假定需要查询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. 必须是大小写敏感的

那么,查询看起来应该是这个样子:

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

pymongo的写法如下:

rexExp = re.compile('^s.*')

db.customer.find({'name':rexExp })

omg,看来单靠mongodb是很难满足实际的应用场景,所以还是另外考虑其它搜索引擎做为全文索引的补充吧,lucene系列(solr,elasticSearch)或sphinx都可以考虑下