【发布时间】:2016-04-14 12:08:44
【问题描述】:
我正在使用 MongoDB 3.2,并希望避免在我的集合中出现重复项。为了做到这一点,我使用createIndex() 方法(我尝试了不同的变体,它们都不起作用):
dbColl.createIndex(new Document("guid", 1));
dbColl.createIndex(new BasicDBObject("guid", 1));
dbColl.createIndex(new Document("guid.content", 1));
dbColl.createIndex(new BasicDBObject("guid.content", 1));
然后我尝试执行数据插入:
itemsArr.forEach(
item -> dbColl.insertOne(Document.parse(item.toString()))
);
我做了两次,预计第二次 MongoDB 不会添加任何新行,因为数据已经添加并且guid 字段上有索引。但是,尽管有索引值,MongoDB 却不会添加重复项。
我的问题是,为什么即使 guid 和/或 guid.content 字段上有索引,MongoDB 也会添加重复项?以及如何解决?我希望能够只添加一次具有相同guid 字段的文档。
在我的数据中,guid 字段是唯一的文档标识符。
【问题讨论】:
-
这不是真的。你为什么认为
ChinaPost-f411f6... === skynews-1a2346...? -
@user3100115,实际上我的意思是如果我运行插入命令两次或更多次,那么 MongoDB 将添加两次或更多次
ChinaPost-f411f6…。我不是将ChinaPost-f411f6…与skynews-1a2346…进行比较,而是将第一次执行的ChinaPost-f411f6…与第二次执行插入的ChinaPost-f411f6…进行比较,依此类推。
标签: java mongodb indexing duplicates crud