对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 支持连表查询了,但是为什么不聚合成一个集合呢?

猜你喜欢

转载自blog.csdn.net/u010986518/article/details/82152667