对MongoDB的两个思考

1.为什么要选择使用Mongo而不使用其他的数据库?
i.首先是传统数据库无法解决高并发、海量数据高效存储问题。那么mongoDB数据库为什么可以?
ii.在创建表的时候,MongoDB只需要创建一个Collection,根本不需要定义其结构(可以看出MongoDB使用动态模式)
iii.不需要联表查询
iv.使用mongo存储的时候直接存储的是对象,而数据库是转换成表-对象关系映射
v.需求变化频繁,开发要更加敏捷
vi.部署简单

缺点:
不支持事务(进行开发时需要注意,哪些功能需要使用数据库提供的事务支持)
MongoDB占用空间过大(不过这个确定对于目前快速下跌的硬盘价格来说,也不算什么缺点了)

2.mongo支持连表查询吗?
在我看来,不支持。
若存在两个对象Student(id, cid, name, age)、Class(cid, class, teacher),可以看出cid是Student的外键。如果我们想联表查询所有的信息。用MySQL很好处理 select * from Student s left join Class c where s.cid = c.cid,是不是很简单?

那么用mongoDB 怎么处理呢?
List<Student> students = mongoOperation.findAll(Student.class, "students")
for(Student stu : students){
    Query query = new Query(Criteria.where("cid").is(stu.getCid()));
    Class cla = mongoOperation.finndOne(query, Class.class, "class");
    sysout("studeng-id" + stu.getId() + ... + ",class-id " + cla.getId() + ...);
}
这样查询打印他们的所有信息。

听说现在mongo 支持连表查询了,但是为什么不聚合成一个集合呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值