MongDB- 文档对象之间的关系
2021/8/16 6:39:13
本文主要是介绍MongDB- 文档对象之间的关系,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 文档对象之间的关系
- 一对一 (one TO one)
- 例如: 夫妻 (一个丈夫 对应 一个妻子)
- 在MongoDB中, 可以通过内嵌文档的形式来体现出一对一的关系
演示:
首先在 my_test
数据库中创建一个集合, wifeAndHusband
, 并向集合中插入数据
{ name:"黄蓉", husband:{ name:"郭靖" }
> db.wifeAndHusband.find().pretty() { "_id" : ObjectId("6118eb8a47935623a0ff6300"), "name" : "黄蓉", "husband" : { "name" : "郭靖" } }
一个文档对象一旦被嵌入到另一个文档对象中就绝不可能再被嵌入到其他文档对象中,因此可以体现出一对一的关系
- 一对多 (one TO many) / 多对一 (many TO one) 例如 :
- 父母 To 孩子
- 用户 To 订单
- 文章 To 评论
- 也可以通过内嵌文档来映射一对多的关系, 拿文章和评论举例, 一个文章可以包含多个评论, 只需要在文章中添加一个评论属性, 属性中包含的是一个数组, 数组中为多个评论对象
**问题**:
评论对于文章来说是可以无限多的, 但当评论中的数据多到一定程度后, 会造成单一数据库内存过大的问题,不利于维护
具体实现:
使用 用户 to 订单
距离
- 创建一个集合
user
, 插入以下数据
> db.user.insertMany([{name:'刘俊熙'},{name:'龙猫不热'}]) > db.user.find()
- 创建订单集合
order
,插入数据
db.order.insertOne( { // 用户 刘俊熙对应的订单 list:['苹果','香蕉','西瓜'] } )
但是这样还不能体现该订单是对应 刘俊熙
数据的, 如何处理?
- 将
刘俊熙
数据的_id
的值一起添加到order
集合中, 作为标识
db.order.insertOne( { list:['苹果','香蕉','西瓜'], user_id:ObjectId("6118f452928b3b5423acb15f") } ) db.order.find()
通过唯一性的_id
作为参照插入到另一个文档对象中, 由此实现 一对多的关系
查询一对多
要求: 查询刘俊熙
的订单
db.user.findOne({name:"刘俊熙"})._id
db.order.find({user_id:db.user.findOne({name:"刘俊熙"})._id})
- 多对多 (manyTO many)
- 分类 - 商品
- 老师 - 学生
例如: 在teachers
集合中插入以下数据
db.teachers.insert([ {name:"洪七公"}, {name:"黄药师"}, {name:"龟仙人"} ]); db.teachers.find()
那么,要怎么体现出多对多
的关系呢?
db.stus.insert([ // 如果, 郭靖既是洪七公的徒弟又是黄药师的徒弟,要怎么在数据库中体现呢? {name:"郭靖"} ])
体现
db.stus.insert([ { name:"郭靖", tech_id:[ // 添加洪七公的 _id 作为tech_id 的其中一条数据 ObjectId("61192a9b928b3b5423acb166"), // 再把洪七公的 _id 也添加进来 ObjectId("61192a9b928b3b5423acb167") ] } ])
运行
这时候就能体现出 多对多
的关系了
这篇关于MongDB- 文档对象之间的关系的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29RocketMQ底层原理资料详解:新手入门教程
- 2024-11-29RocketMQ源码资料解析与入门教程
- 2024-11-29[开源]6.1K star!这款电视直播源神器真的太赞啦!
- 2024-11-29HTTP压缩入门教程:轻松提升网页加载速度
- 2024-11-29JWT开发入门指南
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能