Solusi:
Setel default_language
dan language_override
ke nilai literal yang sama (dalam kasus Anda "en").
Bagaimana saya sampai di sini...
Saya mengalami masalah yang sama, juga di Mongo 2.6.1.
Dalam kasus saya, saya membuat indeks dengan language_override
menunjuk ke bidang bahasa di mana sudah ada dokumen dengan nilai yang tidak didukung (mis. 'ar' - Arab).
Inilah cara saya membuat indeks:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "language"
});
Saya berharap itu akan kembali ke default_language
ketika language_override
nilai tidak didukung, tetapi tampaknya tidak. Inilah yang Mongo katakan:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"ok" : 0,
"errmsg" : "language override unsupported: ar",
"code" : 17262
}
OK, baik, jadi indeks tidak dibuat tetapi saya harus dapat membuatnya tanpa language_override, kan? Salah - mongo memberi saya kesalahan yang sama meskipun saya tidak lagi memiliki language_override yang ditentukan .
Upaya yang gagal untuk membuat indeks tampaknya telah meninggalkan beberapa versi indeks yang rusak yang tidak muncul di mana pun sehingga saya tidak dapat menghapusnya (tidak muncul di db.users.getIndexes()
dan menjatuhkannya dengan nama tidak berfungsi).
Pada akhirnya saya berhasil memperbaiki indeks dengan mengatur language_override
dengan nilai literal 'en', seperti ini:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "en"
});
... yang dibalas Mongo:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"numIndexesAfter" : 4,
"ok" : 1
}
Hore.