资讯专栏INFORMATION COLUMN

mongo多态保存

darryrzhong / 982人阅读

Org
public class Org {

    @Id
    private String id;

    private String name;

    private Set employees;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Set getEmployees() {
        return employees;
    }

    public void setEmployees(Set employees) {
        this.employees = employees;
    }
}
employee
public abstract class Employee {

    protected String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
leader
public class Leader extends Employee{

    private String address;

    private String title;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}
worker
public class Worker extends Employee{

    private String mobile;

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
}
保存实例
@Test
    public void testPolymorphic() {
        Org org = new Org();
        org.setName("tech");

        Leader leader = new Leader();
        leader.setName("leader");
        leader.setAddress("fj");
        leader.setTitle("vp");

        Worker worker = new Worker();
        worker.setName("worker");
        worker.setMobile("15909898989");

        Set employees = new HashSet<>();
        employees.add(leader);
        employees.add(worker);

        org.setEmployees(employees);
        orgDao.save(org);
    }
mongo里的数据保存了class
{
    "_id" : ObjectId("57f635e0af7b3807e8101884"),
    "_class" : "com.codecraft.demo.model.Org",
    "name" : "tech",
    "employees" : [ 
        {
            "mobile" : "15909898989",
            "name" : "worker",
            "_class" : "com.codecraft.demo.model.Worker"
        }, 
        {
            "address" : "fj",
            "title" : "vp",
            "name" : "leader",
            "_class" : "com.codecraft.demo.model.Leader"
        }
    ]
}
取数据
@Test
    public void testFind(){
        Org org = orgDao.findOne("57f635e0af7b3807e8101884");
        Set employees = org.getEmployees();
        for(Employee emp : employees){
            if(emp instanceof Leader){
                System.out.println(emp);
            }else if(emp instanceof Worker){
                System.out.println(emp);
            }
        }
    }
docs

用 mongodb 储存多态消息/提醒类数据

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18878.html

相关文章

  • (翻译) MongoDB(20)配置 mongo Shell

    摘要:自定义提示你可以通过在中设置变量来修改提示的内容变量可以保存字符串以及代码如果包含返回字符串的函数可以在每个提示中显式动态信息你可以在文件中添加提示的逻辑以便在你每次启动的时候进行提示自定义提示去显示操作的数量例如创建一个在当前会话中显示带 自定义提示 你可以通过在 mongo shell 中设置变量 prompt 来修改提示的内容. prompt 变量可以保存字符串以及 JavaSc...

    yanest 评论0 收藏0
  • Express 实战(八):利用 MongoDB 进行数据持久化

    摘要:在使用过程中我们可以通过增加哈希次数来提高数据的安全性。当然,对密码的哈希操作应该在保存数据之前。 showImg(https://segmentfault.com/img/remote/1460000010821081); 毫无疑问,几乎所有的应用都会涉及到数据存储。但是 Express 框架本身只能通过程序变量来保存数据,它并不提供数据持久化功能。而仅仅通过内存来保存数据是无法应对...

    yanbingyun1990 评论0 收藏0
  • 初识MongoDB分片

    摘要:复制一份,命名为,修改文件内容如下注意改为我们第一步创建的目录,端口号改为这个随意,只要该端口没被占用即可,表示这是一个配置服务器,另外由于我们的配置服务器要做成备份集,所以要设置。 分片是指将数据拆分,拆分后存放在不同的机器上的过程,以此来降低单个服务器的压力,同时也解决单个服务器硬盘空间不足的问题,让我们可以用廉价的机器实现高性能的数据架构。有的小伙伴不理解分片和副本集的差异,一言...

    Nino 评论0 收藏0
  • Express使用mongodb管理会话储存 connect-mongo模块简介

    摘要:简介在我的前一篇小文中小书提到了可以更换会话储存那么这篇文章我们就来讲讲在进行会话管理的时候如何将会话数据保存在外部数据库中本文中我们使用用作会话储存数据库本文中使用的模块以及版本号一览模块名称版本号特性支持支持所有版本的支持支持 简介 在我的前一篇小文中express-session小书提到了express-session可以更换会话储存. 那么这篇文章我们就来讲讲express在进...

    jackzou 评论0 收藏0

发表评论

0条评论

darryrzhong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<