【发布时间】:2013-08-11 08:39:14
【问题描述】:
我们在 MongoDB 中重命名集合时遇到问题。
集合有一些相当长的索引名称,但这在集合的一般使用中不是问题。我们可以写入并查询它,索引是有效的(如果索引不存在,我们可以通过查询性能的下降来判断)。
但是,当我们重命名集合时,它会失败并显示以下消息:
MongoDB.Driver.MongoCommandException:命令“renameCollection” 失败:异常:集合名称长度 43 超出最大长度 32,允许索引名称(响应:{“errmsg”:“异常: 集合名称长度 43 超过最大长度 32,允许 对于索引名称”,“代码”:16451,“确定”:0.0 })
由于各种原因,我不会在这里详细介绍,重命名集合是我们工作流程的重要组成部分。
如果有人知道此问题的任何解决方法,将不胜感激。
谢谢。
更新:
这是数据库/集合/索引名称:
【问题讨论】:
-
您能提供您的收藏和索引名称的列表吗?看起来此代码将最大集合命名空间大小计算为(120 - 最长索引长度 - 1),如果超过则失败。如果这与用于初始创建的大小规则不一致,听起来像是一个错误,可能是 jira.mongodb.org/browse/SERVER-7282 。此检查的代码在这里:github.com/mongodb/mongo/blob/v2.4/src/mongo/db/cloner.cpp#L864
-
+1 作为错误参考。顺便说一句,重命名不适用于分片集合。
-
您从哪个 GUI 工具获取屏幕截图?看起来不错:)
-
您是要重命名集合以使其具有更长的名称,还是新名称的长度与旧名称相同或更短?如果它的长度相同或更短,则可能是一个错误,但如果更长,那么如果旧的长度已经接近允许的长度边界,则不允许它是有意义的。
标签: mongodb mongodb-.net-driver