我有一个 mongo 集合,用于存储多种语言的城市/国家数据。例如,以下查询:
db.cities_database.find({ "name.pl.country": "Węgry" }).pretty().limit(10);
返回以下格式的数据:
[
{
_id: ObjectId('67331d2a9566994a18c505aa'),
geoname_id_city: 714073,
latitude: 46.91667,
longitude: 21.26667,
geohash: 'u2r4guvvmm4m',
country_code: 'HU',
population: 7494,
estimated_radius: 400,
feature_code: 'PPL',
name: {
pl: { city: 'Veszto', admin1: null, country: 'Węgry' },
ascii: { city: 'veszto', admin1: null, country: null },
lt: { city: 'Veszto', admin1: null, country: 'Vengrija' },
ru: { city: 'Veszto', admin1: null, country: 'Венгрия' },
hu: { city: 'Veszto', admin1: null, country: 'Magyarország' },
en: { city: 'Veszto', admin1: null, country: 'Hungary' },
fr: { city: 'Veszto', admin1: null, country: 'Hongrie' }
}
}
...
]
我希望能够在使用纯英语字符时使用相同的查询,因此对于这个例子,我想通过"name.pl.country": "Wegry"
(而不是字符,ę
我希望 Mongo 在执行这个查询时将其视为e
)进行查询。
有可能实现吗?
到目前为止,我尝试使用如下排序规则:
db.cities_database.find({ "name.pl.country": "Wegry" }).collation({ locale: "pl", strength: 1 }).pretty().limit(10);
但该查询没有返回任何内容。
我对波兰语一无所知,也不知道
e
和之间的区别ę
。但是如果您使用 MongoDB Altas,则可以设置 customAnalyzericuFolding
来执行不区分变音符号的搜索。索引:
$search
询问:MongoDB Atlas 搜索游乐场
我认为这就是波兰排序的定义方式,请参阅波兰 CLDR 图表。
ę Ę 是黑色的,我猜这意味着“必须完全匹配”。其他字符(例如 é É è È ê Ê ë Ë)是灰色的,对于它们来说,它是有效的:
当你询问他们时它会给出
也许你正在寻找