1.基本使用
//进入test数据库
use test
db.getCollection('user').find({})
//查询user集合中的文档
db.user.find()
//向数据库的user集合中插入一个文档
db.user.insert({user_id:5})
db.user.deleteOne({user_id:5})
//统计数据user集合中的文档数量
db.user.find().count()
//查询数据user集合中user_name为123的文档
db.user.find({user_name:"123"})
//向数据库user集合中的user_name为test的文档,添加一个address属性,属性值为huaguoshan
db.user.update({user_name:"test"},{$set:{address:"huaguoshan"}})
//使用{user_name:"cccc"}替换{user_name:"ccc"}
db.user.replaceOne({user_name:"ccc"},{user_name:"cccc"})
//删除user_name为test的文档的address属性
db.user.update({user_name:"test"},{$unset:{address:1}})
//向user_name为test的文档中,添加一个hobby
db.user.update({user_name:"test"},{$set:{hobby:{cities:["beijing","shanghai"],movies:["ceshi","lala"]}}})
//查询喜欢电影lala的文档
db.user.find({'hobby.movies':"lala"})
//$push 向数组中添加一个新的元素
db.user.update({user_name: "test"},{$push:{"hobby.movies":"Inters"}})
//$addToSet 向数组中添加一个新的元素
db.user.update({user_name:"test"},{$addToSet:{"hobby.movies":"Inters"}})
//删除喜欢beijing的用户
db.user.remove({"hobby.cities":"beijing"})
//删除user集合
db.user.remove({})
db.user.drop()
//向numbers中插入20000条数据 7.26s
for(var i =1;i<=20000;i++){
db.numbers.insert({num:i})
}
db.numbers.find().count()
db.numbers.remove({})
//向numbers中插入20000条数据,提供效率 0.16s
var arr = []
for(var i =1;i<=20000;i++){
arr.push({num:i})
}
db.numbers.insert(arr)
//查询numbers中num为500的文档
db.numbers.find({num:500})
//查询numbers中num大于5000的文档
db.numbers.find({num:{$gt:500}})
db.numbers.find({num:{$eq:500}})
//查询numbers中num小于30的文档
db.numbers.find({num:{$lt:30}})
//查询numbers中大于40小于50的文档
db.numbers.find({num:{$gt:40,$lt:50}})
//查询numbers中num大于19996的文档
db.numbers.find({num:{$gt:19996}})
//查看numbers集合中的前10条数据
db.numbers.find({num:{$lte:10}})
//limit()设置显示数据的上限
db.numbers.find().limit(10)
//查看numbers集合中的第11条到20条的数据,skip((页码-1) * 每页显示的条数),limit(每页显示的条数)
db.numbers.find().skip(10).limit(10)
//查看numbers集合中的第21条到30条的数据
db.numbers.find().skip(20).limit(10)
//mongodb会自动调整skip和limit的位置
db.numbers.find().limit(10).skip(10)
2.文档之间的管理
//文档之间的关系 1.一对一 2.一对多/多对一 3.多对多
//一对一 夫妻:一夫一妻
db.wifeAndHusband.insert([{
name:"黄蓉",
husband:{
name:"郭靖"
}
},{
name:"潘金莲",
husband:{
name:"武大郎"
}
}
])
// 一对多 用户和订单,父母和孩子,文章和评论
db.use.insert([{username:"swk"},{username:"zbj"}])
db.order.insert({list:["苹果","香蕉","大鸭梨"],user_id:ObjectId("5e172dddd47162258ca193fc")})
db.order.drop()
db.wifeAndHusband.find()
db.use.find()
db.order.find()
db.order.insert({list:["牛肉","漫画"],user_id:ObjectId("5e172dddd47162258ca193fd")})
db.order.find();
//多对一,查找用户swk的订单
var user_id = db.use.findOne({username:"swk"})._id
db.order.find({user_id:user_id})
db.use.find()
//多对多
db.teachers.insert([{name:"洪七公"},{name:"黄药师"},{name:"龟仙人"}])
db.stus.insert([
{name:"郭靖",tech_ids:[ObjectId("5e17dc6756ef26db309c84ed"),ObjectId("5e17dc6756ef26db309c84ee")]},
{name:"孙悟空",tech_ids:[ObjectId("5e17dc6756ef26db309c84ed"),ObjectId("5e17dc6756ef26db309c84ee"),ObjectId("5e17dc6756ef26db309c84ef")]}
])
导入文件
//将dept和emp集合导入到数据库中
//查询工资在1000——2000之间的员工
db.emp.find({sal:{$lt:2000,$gt:1000}})
//查询工资小于1000或大于2500的员工
db.emp.find({$or:[{sal:{$lt:1000}},{sql:{$gt:2500}}]})
//查询财务部门的所用员工
var depno = db.dept.findOne({dname:"财务部"})deptno
db.emp.find({dname:deptno})
//查询所用mgr为7698的所用员工
db.emp.find({mgr:7698})
//为所用薪资低于1000的员工增加工资400元
db.emp.updateMany({sal:{$lte:1000}},{$inc:{sal:400}})
排序 sort
//查询文档时,默认情况是按照_id的值进行排序(升序)
//sort()可以用来指定文档的排序的规则,sort()需要传递一个对象来指定排序规则 1表示升序, -1表示降序
//limit skip sort 可以以任意的顺序进行调用
db.emp.find({}).sort({sal:-1})
db.emp.find({}).sort({sal:1,empno:-1})
//在查询时,可以再第二个参数的位置来设置查询结果的 投影
db.emp.find({},{ename:1,_id:0,sal:1})