我在一个键(“链接”)上分割了一个mongo群集;索引它但未能确保唯一性。在摄取更多数据后,我复制了分片字段的文档。 (重复链接)。是否有命令删除重复项?我假设您在尝试运行此命令后无法使用
db.articles.ensureIndex({"link" : 1}, {unique : true, dropDups : true});
答案 0 :(得分:1)
除了你已经尝试过的命令之外,没有直接命令。理想情况下,您将删除并重新创建此集合,指定分片键是唯一的,然后重新加载数据:
db.runCommand( { shardCollection : "articles" , key : { link : 1 } , unique : true } );
在文档中很好地编写了各种确保分片集合唯一性的方法:
http://docs.mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/
总的来说,您可以通过shell中的自定义位javascript删除dup,然后使用具有唯一索引的代理集合(如上面链接中所讨论的那样)来强制执行唯一性。