Rozwiązanie:
Ustaw domyślny_język
i language_override
do tej samej wartości dosłownej (w twoim przypadku "en").
Jak się tu dostałem...
Trafiłem na ten sam problem, także na Mongo 2.6.1.
W moim przypadku utworzyłem indeks z language_override
wskazując na pole języka, w którym były już dokumenty z nieobsługiwanymi wartościami (np. „ar” – arabski).
Oto jak tworzyłem indeks:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "language"
});
Miałem nadzieję, że powróci do default_language
kiedy language_override
wartość nie jest obsługiwana, ale najwyraźniej nie. Oto, co mówi Mongo:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"ok" : 0,
"errmsg" : "language override unsupported: ar",
"code" : 17262
}
OK, dobrze, więc indeks nie został utworzony, ale powinienem móc go utworzyć bez language_override, prawda? Źle — mongo wyświetla ten sam błąd mimo że nie mam już określonego parametru language_override .
Wygląda na to, że nieudana próba utworzenia indeksu pozostawiła jakąś uszkodzoną wersję indeksu, która nie pojawia się nigdzie, więc nie mogę jej usunąć (nie pojawia się w db.users.getIndexes() i upuszczenie go po nazwie nie działa).
W końcu udało mi się naprawić indeks ustawiając language_override
do wartości dosłownej 'en', w ten sposób:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "en"
});
... na co Mongo odpowiada:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"numIndexesAfter" : 4,
"ok" : 1
}
Hurra.