ОБНОВЛЕНИЕ: Начиная с 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" }
Обратите внимание, что запросы, нечувствительные к регистру, не используют индекс, поэтому может иметь смысл сделать поле поискового слова строчными буквами, чтобы вы могли ускорить этот запрос.
Перейдите здесь для получения дополнительной информации о регулярных выражениях.
person
Tyler Brock
schedule
23.11.2011