正则表达式 /^bill$/i 将以不区分大小写的方式匹配“Bill”。
这是一个显示这一点的示例(在 mongo shell 中):
> db.foo.insert({name: "Bill"});
> db.foo.insert({name: "Bill status"});
> db.foo.insert({name: "another Bill"});
> db.foo.find()
{ "_id" : ObjectId("5018e182a499db774b92bf25"), "name" : "Bill" }
{ "_id" : ObjectId("5018e191a499db774b92bf26"), "name" : "Bill status" }
{ "_id" : ObjectId("5018e19ba499db774b92bf27"), "name" : "another Bill" }
> db.foo.find({name: /bill/i})
{ "_id" : ObjectId("5018e182a499db774b92bf25"), "name" : "Bill" }
{ "_id" : ObjectId("5018e191a499db774b92bf26"), "name" : "Bill status" }
{ "_id" : ObjectId("5018e19ba499db774b92bf27"), "name" : "another Bill" }
> db.foo.find({name: /^bill$/i})
{ "_id" : ObjectId("5018e182a499db774b92bf25"), "name" : "Bill" }
但是,正则表达式查询不会使用索引,除非它是左根的(即形式 /^prefix/)并且如果不使用 i 不区分大小写标志。与使用使用索引的查询相比,您可能会付出巨大的性能损失。因此,根据您的用例,更好的选择可能是以某种方式使用应用程序逻辑,例如:
当您将项目插入数据库时强制一个案例(例如将“bill”转换为“Bill”)。
对您的已知案例进行搜索(例如,仅针对“Bill”进行搜索)。