《mongodb 实现连接查询》要点:
本文介绍了mongodb 实现连接查询,希望对您有用。如果有疑问,可以联系我们。
今天我们学习下DBRef的使用,用过mongodb的都知道mongodb不能做关联查询,关系型数据库中是可以的,当然我们不要用关系型数据库的思想来用nosql.
但是实际应用中也是会有类似的需求的.
我们就以学生和班级的关系来讲解一对一以及一对多的关联 *** 作.
一个班级有多个学生,班级对学生是一对多的关系
一个学生属于一个班级,学生对班级是一对一的关系
如果用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学院为您提供专业教程。
总结以上是内存溢出为你收集整理的mongodb 实现连接查询全部内容,希望文章能够帮你解决mongodb 实现连接查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)