Я использую mon go (v3.6) и хочу иметь возможность выполнять поиск по полю в документе без учета регистра. В mon go do c Mon go docs v3.6 индекс-без учета регистра указывается, что запросы должны использовать одно и то же сопоставление, поэтому, если я хочу, чтобы myfield использовал поиск без учета регистра, я создаст индекс без учета регистра. По умолчанию индексы должны быть чувствительны к регистру (по моему опыту).
Поэтому ниже я создам коллекцию, чувствительную к регистру, затем создаю регистр без учета регистра и затем покажу, что он используется.
db.createCollection("mycollection", { collation: { locale: 'en_US', strength: 2 } } )
db.mycollection.createIndex({ myfield: 1 }, { collation: { locale: 'en', strength: 2 } } )
Чтобы использовать поиск без учета регистра (так называемый запрос без учета регистра), я бы использовал collation()
следующим образом:
db.mycollection.insert( [ {first: "Sally"}, {first: "sally"} ]);
db.mycollection.find({first: 'SallY'});
// returns nothing
db.mycollection.find({first: 'SallY'}).collation({locale: 'en' })
// Returns both [ {first: 'Sally'}, {first: 'sally'}]
Нет, где я вижу, как ru делает его нечувствительным к регистру?
Так как же сопоставление en
против en_US
делает один случай слепым, а другой нет?
Что я сделал ?
Я выполнил поиск в SO для сопоставления [mongodb-query] en vs en_US и не дал результатов. Но было несколько других вопросов, подобных en
и en-US
, но ничего не применимо.
Ближайший вопрос, который был применен:
Как сопоставление en
против en_US
делает один случай слепым, а другой - нет?