Mongodb避免重复输入

Jes*_*sie 27 java mongodb mongodb-java

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

the*_*eon 42

使用带{unique:true}选项的索引.

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

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

MongoDB索引可以选择强制使用唯一键约束,这可以保证不会插入任何文档,其索引键的值与现有文档的值相匹配.

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

// 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});
Run Code Online (Sandbox Code Playgroud)

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

Document keys = new Document("email", 1);
collection.createIndex(keys, new IndexOptions().unique(true));
Run Code Online (Sandbox Code Playgroud)

  • @Sammaye:您可以使用[稀疏索引](http://www.mongodb.org/display/DOCS/Indexes#Indexes-sparse%3Atrue)来解决null/missing字段的问题. (2认同)