Solución:
Establecer el default_language
y language_override
al mismo valor literal (en su caso "en").
Cómo llegué aquí...
Me encontré con el mismo problema, también en Mongo 2.6.1.
En mi caso creé el índice con un language_override
apuntando a un campo de idioma donde ya había documentos con valores no admitidos (por ejemplo, 'ar' - árabe).
Así es como estaba creando el índice:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "language"
});
Esperaba que volviera al default_language
cuando el language_override
el valor no es compatible, pero aparentemente no. Esto es lo que dice Mongo:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"ok" : 0,
"errmsg" : "language override unsupported: ar",
"code" : 17262
}
De acuerdo, está bien, el índice no se creó, pero debería poder crearlo sin language_override, ¿verdad? Incorrecto:mongo me da el mismo error aunque ya no tengo especificado language_override .
El intento fallido de crear el índice parece haber dejado atrás una versión rota del índice que no aparece en ninguna parte, así que no puedo soltarlo (no aparece en db.users.getIndexes()
y colocarlo por nombre no funciona).
Al final logré arreglar el índice configurando language_override
al valor literal 'en', así:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "en"
});
... a lo que Mongo responde:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"numIndexesAfter" : 4,
"ok" : 1
}
Hurra.