Skip to content

Latest commit

 

History

History
173 lines (152 loc) · 3.36 KB

课时46-课时49笔记.md

File metadata and controls

173 lines (152 loc) · 3.36 KB

课时46 集合中文档关系

集合之间的关系: 一对多(noe to noe): 比如:人《-----》身份证 老公《-----》老婆 一对多(noe to many): 比如:父母《-----》孩子 用户《-----》物品 多对多(many to many): 比如:老师《------》学生

课时47 一对一 、一对多

一对一 : 以内嵌文档的形式体现,

//一对一
db.aAndb.insert([
 {name:"杨过",wife:{name:"小龙女",sex:"女"},sex:"男"},
  {name:"杨过",wife:{name:"小龙女",sex:"女"},sex:"男"}
])

db.aAndb.find();

一对多:: 通过内嵌文档的形式实现或者通过集合的形式实现

//一对多  比如  微博 和 微博评论
//添加微博
db.weibo.insert([
{weibo:"世界这么大,我想去看看"},
{weibo:"我要做一名web开发者!!!"}
])

db.weibo.find();

添加评论

db.comments.insert([
{
weibo_id: ObjectId("5bdd89e06a5e78f4cfc2b9c8"),
list:[
   "那你有钱吗",
    "一个人吗??去呢啊??",
    "加油!!"
]
},
{
weibo_id: ObjectId("5bdd89e06a5e78f4cfc2b9c9"),
list:[
   "那你要学习HTML",
   "那还要你要学习css",
    "加油!!"
]
}
]);

db.comments.find();

查询一对多

var weibo_id= db.weibo.findOne({"weibo" : "世界这么大,我想去看看"})._id;
db.comments.find({weibo_id: weibo_id});

课时48 多对多

多对多的关系: 比如:学生《-------》老师 可以通过多文档关联,

//多对多  老师《------》学生

//插入老师集合
db.teachers.insert([
{
  name:"语文老师",
  teacher_id: 1,
  student_id:[
     1001,
     1002,
     1003
  ]
  },
{
  name:"数学老师",
  teacher_id: 2,
  student_id:[
     1001,
     1002,
     1003
  ]
  },
{
  name:"英语老师",
  teacher_id: 3,
  student_id:[
     1001,
     1002,
     1003
  ]
 }
])

db.teachers.find();


//插入学生集合
db.students.insert([
{
  name:"小明",
  student_id: 1001,
  teacher_id:[
     1,
     2,
     3
  ]
  },
{
  name:"小红",
  student_id: 1002,
  teacher_id:[
     1,
     2,
     3
  ]
  },
{
  name:"小刚",
  student_id: 1003,
  teacher_id:[
     1,
     2,
     3
  ]
 }
])

db.students.find();
db.teachers.find();

课时49 排序和索引

排序和索引:

  1. 排序: 查询文档时,默认是按照_id的值进行排序的(升序) sort() 可以用来指定文档的排序规则,sort() 内部需要传递一个对象来指定文档的排序规则 ,其中1表示升序 ,-1表示降序 limit skip sort 的顺序可以任意改变 ,运行时会自动调整。 不希望它默认按照id排序 希望它按照工资来排序
//按照工资升序排列

db.section.find().sort({wages:1});

//优先按照工资升序排列  如果遇到相同的就在  按照id升序排列
db.section.find().sort({wages: 1},{_id: -1});

  1. 索引: 展示字段中 部分内容 或者是提取这个字段内的部分内容 在查询时 ,可以在第二个参数来设置查询的结果投影

索引: find({ 查询条件 }, { 检索范围(1显示 0隐藏)}) 注意: _id 如果不设置默认是1(显示) 可手动隐藏

db.section.find({}, {name: 1});

//只显示name和wages字段
`db.section.find({}, {name: 1, _id: 0, wages: 1});`

a07a1f2945204ef671ddebc28871c00.png