多字段上的MongoDB唯一索引

多字段上的MongoDB唯一索引,mongodb,indexing,field,unique,Mongodb,Indexing,Field,Unique,我使用的是MongoDb数据库,需要使多个字段唯一。我需要的是让MongoDb检查多个字段的组合是否唯一。让我们举一个我需要的例子: 如果我在添加索引后按此顺序在数据库中添加以下内容: {“姓名”:“保罗”,“年龄”:“21”} {name:“goerge”,“age:“21”} {“姓名”:“保罗”,“年龄”:“44”} {“姓名”:“保罗”,“年龄”:“21”} 在下面的示例中,只有最后一个不会被接受 我尝试了以下独特的复合索引,但它不起作用。在前面的示例中,当它检查每个字段是否唯一时,只保

我使用的是MongoDb数据库,需要使多个字段唯一。我需要的是让MongoDb检查多个字段的组合是否唯一。让我们举一个我需要的例子:

如果我在添加索引后按此顺序在数据库中添加以下内容:
{“姓名”:“保罗”,“年龄”:“21”}

{name:“goerge”,“age:“21”}

{“姓名”:“保罗”,“年龄”:“44”}

{“姓名”:“保罗”,“年龄”:“21”}

在下面的示例中,只有最后一个不会被接受

我尝试了以下独特的复合索引,但它不起作用。在前面的示例中,当它检查每个字段是否唯一时,只保留第一个字段:

db.test.createIndex({“name”:1,“age”:1},{unique:true})

我也试过,同样的问题:

db.test.createIndex({“name”:1},{unique:true})

db.test.createIndex({“age”:1},{unique:true})

我搜索了几个小时,找不到任何能让我这么做的东西


有人知道怎么做吗?

你不能创建唯一的索引,因为你的名字和年龄不唯一!检查21岁的保罗 如果你修正了这个值。创建索引的最佳方法是以下方法

db.test.createIndex({"name":1, "age":1}, {unique:true})

听起来您已经有了重复的数据,而且各种索引尝试也无济于事。您应该在第一次尝试创建之前删除所有索引,并首先删除所有重复的索引。见编辑后的帖子。在本例中,索引已经设置,我们添加了这些新文档。无法复制。如果使用
{“name”:1,“age”:1},{unique:true}
定义了索引,则最后一个文档插入将按其应该的方式失败。如前所述,我们希望您的集合中已包含重复数据,并给出了删除过程。如果只是一个测试,则删除集合并重新开始。