首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带Java外键的MongoDb

带Java外键的MongoDb
EN

Stack Overflow用户
提问于 2017-08-11 13:09:49
回答 2查看 7.6K关注 0票数 2

我需要使用Java在我的MongoDB中保存两个集合。其中一个集合是Department,另一个集合是Employee。在某个部门可以有许多员工的情况下,我想保存一个集合,就像要映射到我的部门员工列表中的员工唯一ID一样。

示例:

代码语言:javascript
复制
{
    "_id" : ObjectId("598da19250aa4ad2413d4bc0"),
    "_class" : "com.department",
    "departmentName" : "SAQ-A",
    "departmentNumber" : "3_2",
    "employee" : [ 
           "id" : "1",
           "id" : "2",
           "id" : "3"
     ]
}

我能知道用Java在MongoDB中实现它的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-11 14:37:22

通过提供的文档和标记,我假设您正在使用spring数据来处理mongodb。因此,在这里,您可能希望使用DBRefs将员工绑定到部门。幸运的是,弹簧数据为您提供了@DBRef注释。

雇员班:

代码语言:javascript
复制
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class Employee {

    @Id
    private Integer id;
    ...

}

系班:

代码语言:javascript
复制
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class Department {

    @Id
    private String id;

    @DBRef
    private Collection<Employee> employees;
    ...
}

MongoDB文档:

代码语言:javascript
复制
{
    "_id" : ObjectId("598dc04ac4fdd0e29867ccbb"),
    "_class" : "foo.bar.Department",
    "employees" : [ 
        {
            "$ref" : "employee",
            "$id" : 1
        }, 
        {
            "$ref" : "employee",
            "$id" : 2
        }
    ]
}

注意:雇员实例必须已经存在于MongoDB中。DBRef将不会以级联样式保存员工。请看这篇关于级联的文章。

票数 8
EN

Stack Overflow用户

发布于 2018-06-07 19:35:07

如果$id不工作,就像这样试一试

“雇员”:{ "$ref“:"employee","id”:1 },{ "$ref“:"employee","id”:2}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45636064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档