MongoDB:操作练习

发布于 2021-04-27  1464 次阅读


数据准备

db.users.insert({"id":NumberLong(1),"name":"dafei","age":NumberInt(18)})
db.users.insert({"id":NumberLong(2),"name":"xiaofei","age":NumberInt(20)})
db.users.insert({"id":NumberLong(3),"name":"zhang quan dan","age":NumberInt(33)})
db.users.insert({"id":NumberLong(4),"name":"zhang kun","age":NumberInt(26)})
db.users.insert({"id":NumberLong(6),"name":"cai xv kun","age":NumberInt(29)})
db.users.insert({"id":NumberLong(7),"name":"jia nai liang","age":NumberInt(25)})
db.users.insert({"id":NumberLong(8),"name":"fu rong wang","age":NumberInt(28)})
db.users.insert({"id":NumberLong(9),"name":"wang da","age":NumberInt(31)})
db.users.insert({"id":NumberLong(10),"name":"da wang","age":NumberInt(32)})
db.users.insert({"id":NumberLong(11),"name":"will","age":NumberInt(26)})

练习

//一、语法
//1、数据库操作
//查询所有数据库
show dbs
//数据库名: 创建并且选中数据库,数据库已经存在则直接选中
use test
//查询当前选择的数据库
db
//删除当前选中的数据库
db.dropDatabase();
// 查询当前库中的集合
show collections
//2、语法
//往集合中插入一个文档
db.users.insert({'name':5555})
//查询集合中所有文档
db.users.find()
//3、修改
db.users.update(
{'name':5555}, 
{"name":9999}, 
{}
)
//把一个带有name=逍遥的文档,修改其age值为30
db.users.update({name:"逍遥"}, {age:30})
//修改所有name=sunny的文档,修改其name=小明,age=20
db.users.update({name:'sunny'}, {name:"小明",age:20})
//修改所有的文档,修改其name=xxx,age=10
db.users.updateMany({} ,{$set:{name:'xxx',age:10}}, {multi:true})
//4、删除
//删除_id=xxx的文档
db.users.deleteOne({_id:ObjectId("6087b1752250b6827c0029f5")})
//删除所有带有name=bunny的文档
db.users.deleteMany({name:'bunny'})
//删除当前数据库中所有文档
db.users.deleteMany({})
//5、查询
//查询所有文档
db.users.find()
//排序查询 age 升序 降序
db.users.find().sort({age:-1})
db.users.find().sort({age:1})
//分页查询
db.users.find().skip(2).limit(5)
//6、高级查询
//需求1:查询所有name=sunny的文档
db.users.find({name:'bunny'})
//需求2:查询所有name=bunny或者age<30的文档
db.users.find({$or:[{name:'bunny'},{age:{$lt:11}}]})
//需求3:查询所有name含有wang并且30<=age<=32的文档
db.users.find({$and:[{name:'wang'},{age:{$gt:20,$lt:30}}]})
//7、分页
//db.集合.find({}).skip(n).limit(m)
//第一页
db.users.find({}).skip(0).limit(5)
//第二页
db.users.find({}).skip(5).limit(5)
//8、比较运算符
//查询age > 30的用户
db.users.find({age:{$gte:30}})
//查询名字为 dafei 或xiaofei用户
db.users.find({$or:[{name:'dafei'},{name:'xiaofei'}]})
//判断指定列是否存在
db.users.find({name:{$exists:true}})
//9、逻辑运算符
//查年龄在28 到 30间的用户信息
db.users.find({age:{$gte:28, $lte:30}})
//查看年龄小于28或者年龄大于30用户信息
db.users.find({$or:[{age:{$lt:28}},{age:{$gt:30}}]})
//查看年龄等于28或者等于30用户信息
db.users.find({$or:[{age:{$eq:28}},{age:{$eq:30}}]})
db.users.find({age:{$in:[28,30]}})
//10、模糊匹配
//查询name带有fei的用户信息
db.users.find({name:{$regex:/fei/}})
//查name中包含fei字样,并且年龄在28 到 30间的用户信息,
db.users.find({
   $and:
	 [{
   name:{$regex:/fei/}},
	{age:{$gt:28,$lt:30}}
	]
})
//11、数组
//给所有数据加数组字段
db.users.updateMany({}, {$set:{hobby:[]}})
//$push : 给数组字段添加数据, 允许数据元素重复
db.users.updateMany({}, {$push:{hobby:'java'}})
//给name等于dafei的用户添加java 爱好
db.users.updateMany({name:'dafei'}, {$push:{hobby:'java'}})
//给name等于dafei的用户添加'java', 'c', 'vue' 爱好
db.users.updateMany({name:'dafei'}, {$push:{hobby:{$each:['java','c','vue']}}})
//$addToSet: 给数组字段添加数据, 不允许数据元素重复
db.users.updateOne({},{$addToSet:{hobby:'java'}})
//$pop 删除数组中数据, 1:删除最后一个,  -1: 删除第一个 
//局限: 只能从头或者从尾删除, 不能通过指定元素删除
//需求删除name=dafei用户最后一个兴趣
db.users.update({name:'dafei'},{$pop:{hobby:1}})
db.users.update({name:'dafei'},{$pop:{hobby:-1}})
//$pull  删除数组中数据, 通过指定内容删除
db.users.update({name:'dafei'},{$pull:{hobby:'c'}})
//需求:删除name=dafei用户java兴趣选项
db.users.update({name:'dafei'},{$pull:{hobby:'java'}})
//方式1: 通过索引修改
//需求: 将name=dafei的用户索引为1的兴趣改为 go
db.users.update({name:'dafei'}, {$set:{'hobby.1':'go'}})
//方式2:通过数组元素修改
//需求: 将name=dafei的用户 c 兴趣 改为 c#
db.users.update({name:'dafei', hobby:'c'}, {$set:{'hobby.$':'c#'}})


欢迎欢迎~热烈欢迎~