MongoDB嵌入式参考重复错误

时间:2018-02-15 09:08:12

标签: java spring mongodb

我是MongoDB的新手,来自Sql数据库系统。我对mongodb的嵌入式引用感到困惑。

我使用Java Spring Framework和Spring的MongoRepository接口。我有一个用User注释的类(@Document),并且有一个带注释id的字符串字段(@Indexed(unique = true))。我有第二个类(Device),其中包含一个嵌入的User对象。这就像多对一关系(许多设备可能属于一个用户),但是当我尝试使用相同的用户保存第二个设备时,应用程序会抛出错误E11000 duplicate key error collection: test.device index: user.id dup key: { : "5a8549fbeed7ae612d6a10d1" }.

我尝试在User引用中使用Devices对象(使用@DBRef注释)和@Indexed(unique = false),我可以设法保存两个设备。但是,我不想使用参考文档,嵌入文档会更好。

我只是想知道,我的做法是错的吗?或者我的配置错了?

1 个答案:

答案 0 :(得分:0)

如果用户信息不相关,则可以在@Transient字段上使用Device.user注释。如果您需要设备文档中的用户信息,请尝试使用User.id字段(SQL方法)。