mongodb 实现连接查询

mongodb 实现连接查询,第1张

概述介绍《mongodb 实现连接查询》开发教程,希望对您有用。

《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 实现连接查询所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1152187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存