- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试使用 Spring boot 创建一个 MongoDB 应用程序。但是,在启动之前它会抛出 E11000 Dup 异常。集合中的关键错误。尽管我已经验证了所有点,但在启动时出现此错误,但是我在数据中没有找到任何重复的 key 。我的数据结构看起来像
@Document( collection = "IT" )
public class ItemType {
@Id
private String id;
private IV[] iv;
}
public class IV {
private String value;
private AP[] aps;
}
@Document( collection = "AP" )
public class AP {
@Id
private String id;
@Indexed( unique = true )
private String apc;
private String dim;
private string foc;
}
每当我启动 Spring Boot 应用程序时,它都会抛出以下异常:
E11000 duplicate key error collection: p.IT index: iv.aps.apc dup key: { : "AVI" }
我的数据集是:
{
"_id" : ObjectId("5e846c5c3584fe7c7831283e"),
"iv" : [
{
"value" : "M",
"aps" : [
{
"apc" : "MOV"
},
{
"apc" : "AVI"
}
]
},
{
"value" : "N",
"aps" : [
{
"apc" : "MOV"
},
{
"apc" : "AVI"
}
]
},
{
"value" : "O",
"aps" : [
{
"apc" : "MOV"
}
]
},
{
"value" : "P",
"aps" : [
{
"apc" : "MOV"
}
]
}
]
}
我是 MongoDB 新手,似乎我没有正确构建数据结构。因为我愿意以一种方式创建对集合的引用,所以我在另一个集合中使用的少数属性应该在那里可用,即,正如您所看到的 AP 具有超过 2 个属性。但是,我只使用 IV 所需的 apc
最佳答案
您在 AP 类中定义了唯一索引
@Indexed( unique = true )
private String apc;
然后你就有了 IV 类中的 AP 对象数组
private AP[] aps;
以及 IT 类中的 IV 对象数组
private IV[] iv;
生成的索引将强制不允许两个文档的 apc
字段具有相同的值。 MongoDB 中的索引由一组 k
->v
对构成,其中 k
是值索引字段, v
是内部文档标识符(不是 _id)。如果相同的值在单个文档中出现多次,则只会将其添加到索引中一次。
唯一属性在索引级别强制执行,因此单个文档可以重复该值,因为它只会在索引中产生单个条目,但其他文档不能使用该值,因为它需要添加索引中的第二个副本。
为了将其带回到您的数据中,该示例文档包含 iv.aps.apc
、MOV
和 AVI
的 2 个不同值>。由于它是使用 unique 选项建立索引的,因此该集合中的任何其他文档都不能在该字段中包含这些值中的任何一个。
关于java - 蒙戈错误: Spring Boot throws E11000 duplicate key error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61445750/
我是一名优秀的程序员,十分优秀!