MongoDB_文档关系

一、文档之间的关系

1、一对一(One to One)

  • 如夫妻(一个妻子  对应  一个丈夫)
  • 在MongoDB中可以通过内嵌文档的形式来体现出一对一的关系
db.WifeAndHusband.insert(
	{wife:"小汐",
	  husband:{name:"晓龙"}
	},
	{wife:"小青",
	  husband:{name:"小富"}
	}
);

db.WifeAndHusband.find();

2、一对多(One to Many)/ 多对一(Many to One)

  • 父母  对应  多个孩子 ;用户  对应  多个订单;文章  对应  多个评论
  • 也可以使用内嵌文档来映射一对多的关系
  • /*用户users 和  订单orders*/
    db.users.insert([
    	{username:"小皮球"},
    	{username:"大关关"}
    ]);
    
    db.users.find();
    
    db.orders.insert(
    	{
    	  list:["辣椒","花椒","油"],
    	  userId:ObjectId("5b4dba54d9152b29b71913f1")
    	}
    );
    
    db.orders.find();
    
    /*查找用户小皮球的订单*/
    var user_id = db.users.findOne({username:"小皮球"})._id;
    db.orders.find({userId:user_id});
    
    
    

3、多对多(Many to Many)

  • 分类  —  商品;老师 — 学生
/*老师、学生*/
db.teachers.insert([
	{name:"Jack"},
	{name:"Mike"},
	{name:"bluce"}
]);

db.teachers.find();

db.studs.insert([
	{name:"郭靖",
	teacherIds:[
			ObjectId("5b4dc529090e87579f7c472c"),
			ObjectId("5b4dc529090e87579f7c472d")
		]
	},
	{name:"灰太狼",
	teacherIds:[
			ObjectId("5b4dc529090e87579f7c472c"),
			ObjectId("5b4dc529090e87579f7c472d"),
			ObjectId("5b4dc529090e87579f7c472e")
		]
	}
]);


db.studs.find();

实例:

//27.查询工资小于2000的员工
db.emp.find({sal:{$lt:2000}})
//28.查询工资在1000-2000之间的员工
db.emp.find({sal:{$lt:2000,$gt:1000}})
//29.查询工资小于1000或大于2500的员工
db.emp.find({$or:[{sal:{$gt:2500}},{sal:{$lt:1000}}]});
//30.查询财务部的所有员工
var dept_no = db.dept.findOne({dname:"财务部"}).deptno;
db.emp.find({depno:dept_no});
//31.查询销售部的所有员工
var dept_no = db.dept.findOne({dname:"销售部"}).deptno;
db.emp.find({depno:dept_no});
//32.查询所有mgr为7698的所有员工
db.emp.find({mgr:7698})
//33.为所有薪资低于1000的员工增加工资400元
db.emp.updateMany({sal:{$lt:1000}},{$inc:{sal:400}})


二、关于_sort和投影

查询文档的时候,默认是按照id的值进行排序(升序)。

1、可以用sort( )指定排序的规则

db.集合名.find().sort({排序字段:1});#1升序
db.集合名.find().sort({排序字段:-1});#-1降序

db.emp.find().sort({sal:1});

注意:MongoDB中skip、sort、limt可以按照任意顺序进行调用。

2、查询时可以在第二个参数位置设置查询结果的 投影(想显示的字段)

db.集合名.find({},{想要显示的字段:1});#1显示
db.集合名.find({},{想要显示的字段:0});#0不显示

db.emp.find({},{sal:1});

猜你喜欢

转载自blog.csdn.net/qq_30604989/article/details/81084998