MongoDB数据库的基本操作梳理

本篇文章是对MongoDB数据库的基本操作梳理,如有错误,请斧正!!

此篇文章开始之前已经默认你电脑上装了MongoDB数据库,所以不再赘述安装。

基本的Shell命令
  • 显示已经存在的数据库
>show dbs
复制代码
  • 进入数据库
>use test(数据库名字)
复制代码
  • 显示数据库中的集合
>show collections
复制代码
  • 显示当前位置
>db     (常用)
复制代码
数据的基本操作
  • 建立数据库
>use test(数据库名字)  //若没有test数据库,使用此命令会自动创建数据库,
数据库默认为空
复制代码
  • 新建数据集合并插入数据
>db.users.insert() //users为集合名,当无此集合时,使用此命令可创建次集合,
并 加入数据。
//例如:
>db.users.insert({'name':'钢铁侠'})

>db.users.insertMany([      //插入多个文档
{'name':'钢铁侠'},
{'name':'钢铁侠'},
{'name':'钢铁侠'}
])

>db.users.insertOne( { item: "card", qty: 15 } ); //插入一个文档
复制代码
  • 查询所有数据
find()返回的是一个数组
>db.users.find() //使用此语句可以查看users集合下的所有数据

>db.users.find({name:'ljy'});//查找name为ljy的数据
复制代码
  • 查询集合的第一条数据
findOne()返回的是一个对象
>db.users.findOne() //使用此语句可以查询users集合下的第一条数据
复制代码
  • 修改集合中的数据
>db.users.update({查询条件},{修改数据})//第一个参数是要查询的条件,
第二个参数是要修改成的值,
注意:在这里可以多加数据项
//例如:
>db.users.update({'name':'钢铁侠'},{'age':21,'sex':1})
复制代码
  • 删除集合中的数据
>db.users.remove({删除条件})
//例如:
>db.users.remove({'name':'钢铁侠'})
复制代码
  • 删除数据集合
>db.users.dorp() //删除整个集合,使用时一定要注意慎重
复制代码
  • 删除数据库
>db.dropDatabase() //删除整个数据库,在删除时一定先要进入该数据库
复制代码
update 修改器
  • $set修改器

用于修改一个指定的数据项

>db.users.update({'name':'钢铁侠'},{$set:{'age':23}})//修改ok
复制代码

还可以用于修改嵌套内容

>db.users.update({'name':'钢铁侠'},{$set:{'school.name':'大学'})
复制代码
  • unset修改器

用于将数据项删除

>db.users.update({'name':'钢铁侠'},{$unset:{'age':''}})//修改ok
复制代码
  • $inc修改器

用于对value值是数字的数据修改,修改的一定是数字,对字符串不起作用

>db.users.update({'name':'js'},{$inc:{'age':-2}})
复制代码
  • multi选项

multi是update的参数,可选,默认是fasle,只更新找到的第一条数据,如果这个参数为true,就把按条件查出来的多条记录全部跟新

>db.users.updateMany({},{$set:{'like':[]}})//修改多个数据

>db.users.update({},{$set:{'like':[]}},{multi:true})
//首先匹配所有,然后给集合中的每个数据添加like数据项
复制代码
  • upsert选项

upsert是update的参数,可选,默认是fasle,upsert是在找不到值的情况下,直接插入这条数据,true代表没有就添加,fasle代表没有不添加。

>db.users.update({name:'js'},{$set:{age:20}},{upsert:true})
//如果找到age为20岁,就不添加,否者添加age:20
复制代码
update数组修改器
  • $push修改器

$push的作用是追加数组中的值

>db.users.update({'name':'js'},{$push:{like:'画画'}})
复制代码

$push也可以给内嵌文档添加值

>db.users.update({'name':'js'},{$push:{'school.name':'小学'}})
复制代码
  • $ne修改器

$ne修改器的作用是,检查一个值是否存在,如果不存在就执行相关操作,如果存在就不会执行相关操作

>db.users.update({'name':'js',age:{$ne:21}},{$set:{age:21}}})
复制代码

总结:没有就执行,有就不执行

  • $addToSet修改器

$addToSet是$ne的升级版,作用是,查找是否存在,不存在就push上

>db.users.update({name:'js'},{$addToSet:{like:'上网'}})
复制代码
  • $each修改器

$each可以传入一个数组,一次增加多个值进去,相当于批量增加,性能比循环操作好的多

>var newLikes = ['滑雪','打篮球']

>db.users.update({name:'js'},{$addToSet:{like:{$each:newLikes}}})
复制代码
  • $pop修改器

$pop删除数组值,只删除一次,并不是删除数组中的所有值,它有两个选项1和-1

1:从数组末尾进行删除

-1:从数组前面进行删除

>db.users.update({name:'js'},{$pop:{like:1}})
>>db.users.update({name:'js'},{$pop:{like:-1}})
复制代码
  • 数组定位修改
>db.users.update({name:'js'},{$set:{like.2:'踢足球'}})
复制代码
条件操作符
  • 筛选字段

有时我们只想看到某一些字段,我们可以这样操作:

>db.users.find({name:'js'},{name:true,age:true})
复制代码

这样我们就只能看到name和age字段,true和false,可以用1和0表示

小于($lt)

小于等于($lte)

大于($gt)

大于等于($gte)

不等于($ne)

>db.users.find({age:{$lt:20,$gt:18}})
复制代码
find多条件查询
  • $in修饰符

可以解决查询多值的情况

>db.users.find({age:{$in:[21,23]})//查找年龄是21和23的数据
复制代码
  • $or修饰符

用来查询多个键值的情况,或者的意思

>db.users.find({$or:[{age:{$gte:23}},{like:'画画'}]})
//查找年龄大于等于23或者喜欢画画的数据
复制代码
  • $and修饰符

就是与的意思

>db.users.find({$and:[{age:{$gte:23}},{like:'画画'}]})
//查找年龄大于等于23和喜欢画画的
复制代码
find的数组查询
  • 基本操作
>db.users.find({like:['画画','写字']})//查找喜欢画画写字的数据,[]完全匹配
>db.users.find({like:'画画'})
//查找喜欢画画的数据,只要like中有画画都找出来,未完全匹配
复制代码
  • $all修饰符

相当于,与的意思

>db.users.find({like:{$all:['画画','打篮球']}})
//既找出画画又找出打篮球的数据
复制代码
  • $in修饰符

相当于或者的意思

>db.users.find({like:{$in:['游泳','学习']}})
//查询喜欢游泳或者学习的数据
复制代码
  • $size

$size可以根据数组的数量查询出结果

>db.users.find({like:{$size:5}})
//查询出like的数量为5的数据
复制代码
find的参数

query:这个就是查询条件,MongoDB默认的的一个参数

fields:查询出来后显示的结果样式,可以用true和false控制是否显示。

limit:返回的数量,后边跟数字,控制每次查询返回的结果数量。

skip:跳过多少个显示

sort:排序方式,从小到大排序使用1,从大到小排序使用-1

我们可以用这个实现分页

>db.users.find().limit(8).skip(8).sort({age:-1})
//返回8条数据,跳过8条数据
复制代码

未完待续。。。。

转载于:https://juejin.im/post/5cad612de51d456e7e297b8d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值