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

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

例子:


> db.stuff.save({"foo":"bar"});


> db.stuff.find({"foo":"bar"}).count();

1

> db.stuff.find({"foo":"BAR"}).count();

0


慕桂英4014372
浏览 2920回答 3
3回答

慕的地8271018

最新情况:原来的答案现在已经过时了。MongoDB现在支持高级全文搜索,具有许多特性。原文:应该指出,使用regex的大小写不敏感/i进行搜索意味着MongoDB不能按索引进行搜索,因此对大型数据集的查询可能需要很长时间。即使使用较小的数据集,它也不是很有效。您的CPU命中率比您的查询授权要大得多,如果您想实现规模,这可能会成为一个问题。作为另一种选择,您可以存储大写副本并对其进行搜索。例如,我有一个用户表,它的用户名是混合大小写,但是id是用户名的大写副本。这确保了区分大小写的复制是不可能的(不允许使用“foo”和“foo”),我可以通过id=username.toUpperCase()进行搜索,以获得不区分大小写的用户名搜索。如果您的字段很大,例如消息体,那么复制数据可能不是一个好的选择。我相信在这种情况下,使用像ApacheLucene这样的无关索引器是最好的选择。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB