正規表現 /^bill$/i は、大文字と小文字を区別しない方法で "Bill" に対してのみ一致します。
これを示す例を次に示します (mongo シェルで):
> 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" のみを検索します)。