当前位置:  开发笔记 > 数据库 > 正文

Mongo中不区分大小写的搜索

如何解决《Mongo中不区分大小写的搜索》经验,为你挑选了3个好方法。

我在Mongo中使用不区分大小写的搜索,类似于/sf/ask/17360801/.

即我正在使用带有选项的正则表达式i.但是我在将正则表达式限制为该单词时遇到了麻烦,它在SQL中的表现更像"喜欢"

例如:如果我使用查询 {"SearchWord" : { '$regex' : 'win', $options: '-i' }},它会显示win,window和winter的结果.我如何将其限制为jsut show win?

我试过了,/^win$/但它说无效Json ....请建议一个方法.

提前致谢



1> Somnath Mulu..:

您可以使用$options => i不区分大小写的搜索.提供字符串匹配所需的一些可能示例.

确切的不区分大小写 string

db.collection.find({name:{'$regex' : '^string$', '$options' : 'i'}})

包含 string

db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})

从...开始 string

db.collection.find({name:{'$regex' : '^string', '$options' : 'i'}})

结束 string

db.collection.find({name:{'$regex' : 'string$', '$options' : 'i'}})

不包含 string

db.collection.find({name:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})

将此作为书签,以及您可能需要的任何其他更改的参考. http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/



2> AlphaB..:

你可以使用'$regex':'^win$'/^win$/i(注意第二个没有引用)

来源:与Mongo的查询中的正则表达式



3> Tyler Brock..:

更新:从MongoDB 2.4开始,人们将使用"文本"索引和全文搜索查询来执行此操作.你可以在这里阅读它们.如果使用最近的MongoDB,下面的方法将是愚蠢和不必要的.

但是,如果你有MongoDB <2.4.0,你可以像这样使用正则表达式:

> db.reg.insert({searchword: "win"})
> db.reg.insert({searchword: "window"})
> db.reg.insert({searchword: "Win"})

> db.reg.find()
{ "_id" : ObjectId("4ecd2e33dd68c9021e453d12"), "searchword" : "win" }
{ "_id" : ObjectId("4ecd2e36dd68c9021e453d13"), "searchword" : "window" }
{ "_id" : ObjectId("4ecd2e39dd68c9021e453d14"), "searchword" : "Win" }

> db.reg.find({ searchword: /^win$/i })
{ "_id" : ObjectId("4ecd2e33dd68c9021e453d12"), "searchword" : "win" }
{ "_id" : ObjectId("4ecd2e39dd68c9021e453d14"), "searchword" : "Win" }

但是,由于在使用$ regex运算符时不需要"/",因此您的版本无法正常工作:

> db.reg.find({ searchword: { $regex: "^win$", $options: '-i' }})
{ "_id" : ObjectId("4ecd2e33dd68c9021e453d12"), "searchword" : "win" }
{ "_id" : ObjectId("4ecd2e39dd68c9021e453d14"), "searchword" : "Win" }

请注意,不区分大小写的查询不使用索引,因此创建小写的搜索字段可能是有意义的,这样您就可以加快查询速度.

走在这里对RegularExpressions更多信息

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有