更新:从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的更多信息