我已經定義以下集合:春數據的MongoDB - 嵌入與@Indexed文檔(唯一= TRUE)
@Document(collection="sectors")
public class Sector {
private final String id = null;
@Indexed(unique=true)
private String name;
}
@Document(collection="companies")
public class Company {
@Id
private UUID uid;
@Indexed(unique=true)
private String nif;
private String name;
private List<Sector> sectors = new ArrayList<>();
}
如果我嘗試用相同的部門,然後我得到 'E11000 duplicate key error index: fake.companies.sectors.name dup key : {[[sector1, sector2]] }';
插入兩家公司
從扇區註釋出@Indexed(unique=true)
它的工作原理。爲什麼會這樣?是一個錯誤?我希望部門實體按名稱唯一編制索引,兩個公司在共享相同部門時不應存在任何問題。
這是索引的工作原理。它們在收集文件中是獨一無二的,而不是單個文件。看[解釋](https://docs.mongodb.com/manual/core/index-unique/#unique-constraint-across-separate-documents)和[解決方法](https://jira.mongodb.org/browse/SERVER-1068) – Veeram
@Veeram哦,好吧,那很糟糕。 ty – anat0lius