/*
文档之间的关系
一对一(one to one)
- 夫妻 (一个丈夫 对应 一个妻子)
一对多(one to many)/多对一(many to one )
-父母 -孩子
用户 -订单
文章 -评论
- 也可以通过内嵌文档来映射一对多的关系
多对多(many to many)
- 分类 - 商品
老师 - 学生
*/
db.wifeAndHusband.insert([
{
name:"黄蓉",
husband:{
name:"郭靖"
}
},
{
name:"潘金莲",
husband:{
name:"武大郎"
}
}
])
db.wifeAndHusband.find()
//一对多 用户(users) 和 订单(orders)
db.users.insert([{
username:"swk"
},
{
username:"zbj"
}
])
db.users.find()
db.order.insert({
list:["猪肉","牛肉"],
user_id:ObjectId("5cdfbb3eab9f6950c88ce2db")
})
db.order.find({})
.projection({})
.sort({_id:-1})
.limit(100)
//查找用户swk的订单
var user_id = db.users.findOne({username:"zbj"})._id
db.order.find({user_id:user_id})
.projection({})
.sort({_id:-1})
.limit(100)
//多对多
db.teachers.insert([
{name:"洪七公"},
{name:"黄药师"},
{name:"龟仙人"}
])
db.teachers.find({})
.projection({})
.sort({_id:-1})
.limit(100)
db.stus.insert([
{
name:"郭靖",
tech_ids:[
ObjectId("5cdfbe3aab9f6950c88ce2e1"),
ObjectId("5cdfbe3aab9f6950c88ce2e0"),
]
},
{
name:"孙悟空",
tech_ids:[
ObjectId("5cdfbe3aab9f6950c88ce2e1"),
ObjectId("5cdfbe3aab9f6950c88ce2e0"),
ObjectId("5cdfbe3aab9f6950c88ce2df")
]
}
])
db.stus.find({})
.projection({})
.sort({_id:-1})
.limit(100)
db.dept.find({})
.projection({})
.sort({_id:-1})
.limit(100)
db.emp.find({})
.projection({})
.sort({_id:-1})
.limit(100)
db.emp.find({sal:{$lt: 2000}})
.projection({})
.sort({_id:-1})
db.emp.find({sal:{$gt: 1000,$lt: 2000}})
.projection({})
.sort({_id:-1})
.limit(100)
db.emp.find({$or: [{sal:{$lt: 1000}} , {sal:{$gt: 2500}}]})
.projection({})
.sort({_id:-1})
.limit(100)
//查询财务部的所有员工
var deptno = db.dept.findOne({dname:"财务部"}).deptno
db.emp.find({depno:deptno})
.projection({})
.sort({_id:-1})
.limit(100)
//查询销售部的所有员工
var deptno = db.dept.findOne({dname:"销售部"}).deptno
db.emp.find({depno:deptno})
.projection({})
.sort({_id:-1})
.limit(100)
//查询mgr为7698的所有员工
db.emp.find({mgr:7698})
.projection({})
.sort({_id:-1})
.limit(100)
db.emp.find({})
.projection({})
.sort({_id:-1})
.limit(100)
//为所有薪资低于1000的员工增加工资400元
db.emp.updateMany({sal:{$lte: 1000}},{$inc:{sal:400}})
//查询文档时,默认按照_id的值进行排序(升序)
//sort()可以用来指定文档的排序规则,sort()需要传递一个对象来制定排序规则 1表示升序 -1表示降序
//limit skip sort 可以按照任意的顺序来调用
db.emp.find({}).sort({ sal:1 ,empno:1})
//在查询时,可以在第二个参数的位置来设置查询结果的投影
db.emp.find({},{ename:1,_id:0,sal:1});