【问题标题】:mongodb duplicate remove in large size fields(119 fields)mongodb 大字段中的重复删除(119 个字段)
【发布时间】:2015-08-12 14:01:52
【问题描述】:

我有 900 万个文档,每个文档 119 个字段

{  "_id" : 0,"field_1" : "value" , .....,"field_118" : "value" }
...
...
...
{  "_id" : 8999999,"field_1" : "value" , .....,"field_118" : "value" }

我试过了

db.collection.ensureIndex({"field_1":1,"field_2":1,....,"field_118":1}, {unique : true, dropDups : true})

我收到一条错误消息

"errmsg" : "namespace name generated from index name \"....(fields)..\" is too long (127 byte max)", "code" : 67

如何解决?

【问题讨论】:

  • 自 MongoDB 2.6 以来,dropDups 选项已被弃用...您使用的是哪个 mongodb?
  • mongoDB 2.6.10版
  • dropDups 选项将不起作用。您将需要手动删除重复的字段或使用脚本。
  • 我很难相信 119 个字段 会形成一组独特的值组合。您最多可能只有几个字段实际上使文档“唯一”,并且可以处理丢弃或以其他方式处理其他变化的值。
  • remove dups from mongodb 的可能重复项

标签: mongodb aggregation-framework


【解决方案1】:

错误信息显示您的索引的自动生成名称已超出索引名称长度。

来自documentation

索引名称长度完全限定的索引名称,包括 命名空间和点分隔符(即 ..$)不能超过 128 个字符。

默认情况下,是字段名和 索引类型。您可以明确指定 createIndex() 方法确保完全限定的索引名称 不超过限制。

因此,在 ensureIndexcreateIndex 选项参数中为您的索引指定您自己的索引名称:

{unique : true, name: myAwesomeIndex}

【讨论】:

  • 如前所述,“dropDups”选项在 2.6.0 版本中已被弃用,此后已被删除。
  • @BlakesSeven 谢谢,已从我的示例中删除。
猜你喜欢
  • 2019-04-16
  • 1970-01-01
  • 2014-04-07
  • 2015-09-29
  • 1970-01-01
  • 2021-09-11
  • 2018-05-07
  • 1970-01-01
  • 2013-11-25
相关资源
最近更新 更多