Mongorestore:ns名称太长,最大大小为128

rak*_*him 8 mongodb mongorestore

我的Mongo数据库有少量具有自定义名称的索引,因为它们中的字段太多而无法自动生成名称而不会出现"ns name too long"错误.

当我尝试使用mongorestore从备份恢复此数据库时 - 它失败并出现此错误("ns名称太长,最大大小为128").似乎mongorestore尝试根据其内容生成索引名称,而不仅仅是恢复数据库中实际使用的名称.

到目前为止我提出的唯一解决方案是使用带有--noIndexRestore的mongorestore并在之后手动重新创建所有索引,但这显然是一种可怕的方法.有没有更好的方法来解决这个问题?

我遇到MongoDB 2.4.1的这个问题.

谢谢.

Asy*_*sky 2

mongorestore重新创建转储期间存在的索引时使用相同的名称。您可以在 2.2 及更高版本中的 .metadata.json 文件中查看这些名称,在 2.2 之前,这些名称位于 .system.indexes.bson 文件中(它位于 BSON 中,因此您可以使用bsondump命令检查它)。

我发现出现此错误的一种方法是,如果您要恢复到不同名称的数据库或集合,并且新名称比原始名称长。如果您使用原始数据库名称和集合名称,则将使用原始索引名称(自定义或默认),然后它将成为合法名称。