【发布时间】:2016-01-18 12:38:15
【问题描述】:
我正在使用 MongoDb 数据库,我需要使多个字段唯一。我需要的是 MongoDb 检查多个字段的 组合 是否唯一。让我们举一个我需要的例子:
如果我在添加索引后在数据库中按此顺序添加以下内容:{"name":"paul", "age":"21"}{"name":"goerge", "age":"21"}{"name":"paul", "age":"44"}{"name":"paul", "age":"21"}
在以下示例中,only 将不 被接受的人将是最后一个。
我尝试了以下唯一的复合索引,但 它不起作用。在前面的示例中,它只会保留第一个,因为它会检查每个字段是否都是唯一的:
db.test.createIndex({"name":1, "age":1}, {unique:true})
我也试过了,同样的问题:
db.test.createIndex({"name":1}, {unique:true})db.test.createIndex({"age":1}, {unique:true})
我搜索了几个小时,但找不到任何可以让我这样做的东西。
有人知道方法吗?
【问题讨论】:
-
听起来您已经有重复数据,而且各种索引尝试也无济于事。您应该在第一次尝试创建之前删除所有索引并首先删除所有重复项。见remove dups from mongodb
-
编辑了帖子。在示例中,索引已经设置,我们添加这些新文档。
-
无法复制。使用
{"name":1, "age":1}, {unique:true}定义的索引,则最后一个文档插入失败。如建议的那样,您的收藏可能已经包含重复数据,并给出了删除程序。如果只是一个测试,则删除该集合并重新开始。
标签: mongodb indexing field unique