【问题标题】:MongoDB - Duplicate Entry Comes in CollectionMongoDB - 重复条目进入集合
【发布时间】:2012-02-06 14:52:55
【问题描述】:

目前我们在生产服务器中使用 mongodb 分片,并有一个名为“ordertracking”的集合,并使用以下命令创建了 shardkey。

db.runCommand( { shardcollection : "OT.ordertracking", key : {OrderId : 1} } )

在这个集合“_id”中,我们也插入了我们在 OrderId 字段中更新的相同 orderid。但是在这个集合中出现了重复条目。但我们不知道它怎么可能?因为 _id 是唯一键怎么会这样?

为您的参考收集架构详细信息和示例重复条目详细信息。

_id,OrderId,Name,City,State,Country
12,12,sara,38,12,201
12,12,sara,34,12,201
18,12,sara,32,12,201
18,12,sara,28,12,201

如何解决这个问题,请分享您的意见。

【问题讨论】:

  • 您的插入和更新命令是什么样的?

标签: php mongodb sharding


【解决方案1】:

因为 _id 是唯一键,怎么会这样?

Mongo 不支持跨分片的唯一索引。它只能强制分片键本身(或包含分片键的键)的唯一性。

除非你在 _id 上分片,否则 Mongo 不能再保证它的唯一性(因为没有全局索引)。所以你必须在你的应用程序代码中自己处理。

【讨论】:

    【解决方案2】:

    在分片集合中,您不能更改文档的分片键值。它是不可变的。否则,MongoDB 将不得不做大量工作将您的文档重新定位到新的适当位置。

    更改分片键值的正确方法是插入具有新值的新文档并删除旧文档。

    【讨论】:

      猜你喜欢
      • 2020-03-30
      • 2018-04-11
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 2016-12-01
      相关资源
      最近更新 更多