Mongodb避免重复条目

2022-09-01 14:14:31

我是mongodb的新手。请我知道如何避免重复输入。在关系表中,我们使用主键来避免它。我可以知道如何使用java在Mongodb中指定它吗?


答案 1

将索引与该选项结合使用。{unique:true}

// everyone's username must be unique:
db.users.createIndex({email:1},{unique:true});

您也可以跨多个字段执行此操作。有关更多详细信息和示例,请参阅文档中的此部分

唯一索引可确保索引字段不存储重复值。即,强制索引字段的唯一性。默认情况下,MongoDB 在创建集合期间在_id字段上创建唯一索引。

如果您希望从唯一键中忽略值,则还必须通过添加以下选项使索引稀疏(请参阅此处):nullsparse

// everyone's username must be unique,
//but there can be multiple users with no email field or a null email:
db.users.createIndex({email:1},{unique:true, sparse:true});

如果要使用 MongoDB Java 驱动程序创建索引。尝试:

Document keys = new Document("email", 1);
collection.createIndex(keys, new IndexOptions().unique(true));

答案 2

这可以使用“_id”字段来完成,尽管不鼓励使用。假设您希望名称是唯一的,那么您可以将名称放在“_id”列中,并且您可能知道“_id”列对于每个条目都是唯一的。

BasicDBObject bdbo = new BasicDBObject("_id","amit");

现在,在集合中没有其他条目的名称可以命名为“amit”。这可能是您要求的方式之一。