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});

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值