我是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)
,我可以设法保存两个设备。但是,我不想使用参考文档,嵌入文档会更好。
我只是想知道,我的做法是错的吗?或者我的配置错了?
答案 0 :(得分:0)
如果用户信息不相关,则可以在@Transient
字段上使用Device.user
注释。如果您需要设备文档中的用户信息,请尝试使用User.id
字段(SQL方法)。