为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB:是否可以进行不区分大小写的查询?

MongoDB:是否可以进行不区分大小写的查询?

慕桂英4014372 2019-06-24 16:20:25
MongoDB:是否可以进行不区分大小写的查询?例子:> db.stuff.save({"foo":"bar"});> db.stuff.find({"foo":"bar"}).count();1> db.stuff.find({"foo":"BAR"}).count();0
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

最新情况:

原来的答案现在已经过时了。MongoDB现在支持高级全文搜索,具有许多特性。

原文:

应该指出,使用regex的大小写不敏感/i进行搜索意味着MongoDB不能按索引进行搜索,因此对大型数据集的查询可能需要很长时间。

即使使用较小的数据集,它也不是很有效。您的CPU命中率比您的查询授权要大得多,如果您想实现规模,这可能会成为一个问题。

作为另一种选择,您可以存储大写副本并对其进行搜索。例如,我有一个用户表,它的用户名是混合大小写,但是id是用户名的大写副本。这确保了区分大小写的复制是不可能的(不允许使用“foo”和“foo”),我可以通过id=username.toUpperCase()进行搜索,以获得不区分大小写的用户名搜索。

如果您的字段很大,例如消息体,那么复制数据可能不是一个好的选择。我相信在这种情况下,使用像ApacheLucene这样的无关索引器是最好的选择。


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 2904 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信