gpt4 book ai didi

java - 在 MongoDB 3.2 中创建索引以避免重复的文档/行

转载 作者:可可西里 更新时间:2023-11-01 09:26:20 26 4
gpt4 key购买 nike

我正在使用 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 字段的文档。

这是一个文档结构示例: Documents Schema Example

在我的数据中,guid 字段是唯一的文档标识符。

最佳答案

常规索引允许多个文档具有相同的值。

您需要的不是常规索引,而是an unique index .这些是使用方法 createIndex(DBObject keys, DBObject options) 创建的带有选项对象,其中 uniquetrue

collection.createIndex(new BasicDBObject("guid", 1), new BasicDBObject("unique", true));

关于java - 在 MongoDB 3.2 中创建索引以避免重复的文档/行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com