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

我的 Mongo 数据库很少有自定义名称的索引,因为它们中的字段太多,无法自动生成名称而不会因“ns name too long”错误而失败。

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

到目前为止,我想出的唯一解决方案是将 mongorestore 与 --noIndexRestore 一起使用,然后手动重新创建所有索引,但这显然是一种糟糕的方法。有没有更好的方法来解决这个问题?

我在使用 MongoDB 2.4.1 时遇到了这个问题。

谢谢。

最佳答案

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

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

https://stackoverflow.com/questions/15773726/

相关文章:

python - 如何让 django celery 写入测试数据库以进行功能测试?

javascript - MongoDB 聚合框架 - 按年份分组

mongodb - 一个集合中的许多文档与多个集合

mongodb - 对大量数据使用 Mongo 地理空间查询

mongodb - 使用 pymongo 将 MongoDB 导出为 CSV

mongodb - Mongos认证

mongodb - MongoDB 中 V8 JavaScript 引擎对 map reduce 的

javascript - 使用 Javascript/Node.js 在代码中执行 mongoimp

mongodb - 使用 SSL 的 mongodump 和 mongorestore

regex - MongoDB 中 $cond 中的“like”或 $regex 查询