mongodb 实现连接查询
《mongodb 实现连接查询》要点:
但是实际应用中也是会有类似的需求的. 我们就以学生和班级的关系来讲解一对一以及一对多的关联操作.
如果用mysql那么就是下面2张表: 班级表: classId className 学生表: studentId studentName classId 查询学生信息带出班级信息的查询也方便 用mongodb要如何设计集合呢??? 班级集合中嵌套学生信息: 上面的嵌套在学生数量有限的情况下是可以的,如果量大超过16M的时候就不适用了,学生有很多信息,我这边只列了简单的. 为了减少文档的大小,那么能不能像mysql一样,之存储id然后做关联呢? 在mongodb中可以使用DBRef来关联 定义要用到的实体类 保存数据的时候先保存班级数据,班级有了学生对象中的班级才能引用到,因为引用是通过_id来的. 我们可以看到保存后的数据在学生集合中有DBRef引用class中的57fa4b99d4c68bb7d044d616 然后我们查询这个学生的信息就可以自动带出班级的信息了,用过hibernate的一看就知道哈.. 上面将的是一对一的操作,一对多的话就比较麻烦了 我们看上面这段代码,大家觉得这段代码能执行成功吗?不能... 上面也说了,引用一定要引用已经插入到数据的数据. 这边先保存学生信息,学生中引用了班级,班级还没保存 先保存班级信息的话,班级中引用了学生,学生此时还没保存 如果引用没保存的信息就会报错 这样不行,我们就只能曲线救国了 从业务上来说首先肯定是开班级,班级有了再招生 我们就利用上面已经存在的五年级一班来添加学生 在李学生加入班级后,马上把班级集合中的学生List对象改掉,这样班级中也就存在了对这个学生的引用信息,这样就会比较麻烦. 我们在查询班级的时候就可以关联出这个班级下所有的学生信息了 搞个一对多这么麻烦,还不如不弄呢,不要急,条条大路通罗马,这条路不通,还有别的路啊. 我们的需求无非就是想知道某个班级下有多少个学生吗?如果不用关联的话就自己查呗,查的话我们没在学生集合中单独存储班级的id啊,引用里不是有id吗,就用那个查,但是要注意语法classObj.$id 源码地址:https://github.com/yinjihuan/cxytiandi 欢迎参与《mongodb 实现连接查询》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |