【发布时间】:2020-04-26 18:15:28
【问题描述】:
我一直在尝试使用 Spring Boot 创建一个 MongoDB 应用程序。但是,在它开始之前,它会抛出 E11000 Dup 异常。集合中的关键错误。这个错误发生在启动时,虽然我已经验证了所有的点,但是我没有在我的数据中找到任何重复的键。 我的数据结构看起来像
@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 重复键错误收集:p.IT 索引:iv.aps.apc 重复键: { : "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【问题讨论】:
-
检查您的
IT集合是否有apc_1索引。尝试放下它并重新开始 -
No IT 没有任何以 apc 开头的索引 只有 AP 有一个可理解的 apc 索引。
-
请发布您收藏的
db.collection.getIndexes()输出结果。 -
您可能正试图将您的数据插入到已经包含一些数据的集合中。在这种情况下不要插入,或者在插入之前清空集合。
标签: java spring mongodb spring-boot