解决方案:
Set the default_language
and language_override
为相同的字面值(在您的情况下为“en”)。
我怎么到这里来了...
我在 Mongo 2.6.1 上也遇到了同样的问题。
就我而言,我使用以下命令创建了索引language_override
指向一个语言字段,其中已经存在具有不受支持的值的文档(例如“ar” - 阿拉伯语)。
这是我创建索引的方式:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "language"
});
我本来希望它会回落到default_language
当。。。的时候language_override
值不受支持,但显然不支持。蒙戈是这样说的:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"ok" : 0,
"errmsg" : "language override unsupported: ar",
"code" : 17262
}
好的,很好,所以索引没有创建,但我应该能够在没有 language_override 的情况下创建它,对吧?错误 - mongo 给了我同样的错误即使我不再指定 language_override.
创建索引的失败尝试似乎留下了一些损坏的索引版本,这些版本没有显示在任何地方,所以我不能删除它(它没有出现在db.users.getIndexes()
并且按名称删除它是行不通的)。
最后我设法通过设置来修复索引language_override
为字面值 'en',如下所示:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "en"
});
... Mongo 回复道:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"numIndexesAfter" : 4,
"ok" : 1
}
欢呼。