MongoDB数据库中的增删改查

首先你的需要个这个软件

在这里插入图片描述
这个软件请自行下载
打开后页面如下:(使用Ctrl+s)可以打开下图视图
在这里插入图片描述
做好以上准备就可以开始进行正文了!

以下有关数据库的操作

1.查看当前数据库名称:db

2.查看所有数据库名称-列出所有在物理上存在的数据库:show dbs

3.切换数据库 (注:如果数据库不存在,则指向数据库,但不创建,直到插入数据或创建集合时数据库才被创建) :use 数据库名称

例:
use test
默认的数据库为test,如果你没有创建新的数据库,集合将存放在test数据库中

4.数据库删除😦注:删除当前指向的数据库,如果数据库不存在,则什么也不做):db.dropDatabase() 慎用

以下有关对应数据库中的集合的操作

1.集合创建
db.createCollection(name, options)
name是要创建的集合的名称
options是一个文档,用于指定集合的配置

选项​​参数是可选的,所以只需要到指定的集合名称。
db.createCollection(“stu”) – 这个创建了名叫“stu”的结合 也可以看作为是一个表

例:限制集合大小
参数capped:默认值为false表示不设置上限,值为true表示设置上限
参数size:当capped值为true时,需要指定此参数,
表示上限大小,当文档达到上限时,会将之前的数据覆盖,单位为KB
db.createCollection(“sub”, { capped : true, size : 10 } )

2.查看当前数据库的集合:show collections

3.删除集合:db.集合名称.drop()

以下有关对应数据库中的集合中的数据的操作

1.插入文档:db.集合名称.insert(document)

例1
db.stu.insert({name:'gj',gender:1})

例2
s1={_id:'20160101',name:'hr'}
s1.gender=0
db.stu.insert(s1)

2.简单查询:db.集合名称.find()

3.更新

db.集合名称.update(
   <query>,
   <update>,
   {multi: <boolean>}
)

参数query:查询条件,类似sql语句update中where部分
参数update:更新操作符,类似sql语句update中set部分
参数multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新

例3:全文档更新
db.stu.update({name:‘java’},{name:‘python’})

例4:指定属性更新,通过操作符KaTeX parse error: Expected '}', got 'EOF' at end of input: …e({name:'hr'},{set:{name:‘hys’}})

例5:修改多条匹配到的数据
db.stu.update({},{KaTeX parse error: Expected 'EOF', got '}' at position 15: set:{gender:0}}̲,{multi:true}) …的确定数组中一个要被更新的元素的位置
匹配第一个符合查询条件的值的位置。

4.数据的保存:db.集合名称.save(document)

如果文档的_id已经存在则修改,如果文档的_id不存在则添加

例
db.stu.save({_id:'20180102','name':'Tom',gender:1})

db.stu.save({_id:'20180102','name':'John'})

save和insert函数都可以向collection里插入数据,但两者是有两个区别:
一、使用save函数里,如果原来的对象不存在,那他们都可以向collection里插入数据,如果已经存在,save会调用update更新里面的记录,而insert则会忽略操作
二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。

5.数据的删除

db.集合名称.remove(
   <query>,
   {
     justOne: <boolean>
   }
)

参数query:可选,删除的文档的条件
参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条

例:只删除匹配到的第一条
db.stu.remove({gender:0},{justOne:true})
例:全部删除
db.stu.remove({})

6.补充一些课外高能技能:

1、一般来说,我们创建集合用db.createCollection(name)
如:db.createCollection("log"),创建一个名字为log的集合,没有任何的大小,数量限制,使用_id作为默认索引;

2、限制集合空间的大小
db.createCollection("log",{size:1024})或db.createCollection("log",{capped:true,size:1024})
创建一个名字为log集合,限制它的空间大小为1M,如果超过1M的大小,则会删除最早的记录;

3、限制集合的最大条数
db.createCollection("log",{max:1024})
创建一个名字为log集合,最大条数为1024条,超过1024再插入数据的话会删除最早的一条记录。
这个不能使用capped:true,否则会报错;

例
创建集合
db.createCollection('subject',{capped:true,size:10})
插入第一条数据库查询
db.subject.insert({title:'linux',count:10})
db.subject.find()
插入第二条数据库查询
db.subject.insert({title:'web',count:15})
db.subject.find()
插入第三条数据库查询
db.subject.insert({title:'sql',count:8})
db.subject.find()
插入第四条数据库查询
db.subject.insert({title:'django',count:12})
db.subject.find()
插入第五条数据库查询
db.subject.insert({title:'python',count:14})
db.subject.find()

以下是对数据进行详细的增删改查

1.数据的基本查询:

方法 find():查询
db.集合名称.find({条件文档})

方法 findOne():查询,只返回第一个
db.集合名称.findOne({条件文档})

方法 pretty():将结果格式化
db.集合名称.find({条件文档}).pretty()

2.数据的比较运算符:

比较运算符
等于,默认是等于判断,没有运算符
小于:$lt
小于或等于:$lte
大于:$gt
大于或等于:$gte
不等于:$ne

例1:查询名称等于'gj'的学生
db.stu.find({name:'gj'})

例2:查询年龄大于或等于18的学生
db.stu.find({age:{$gte:18}})

3.数据的逻辑运算符:

查询时可以有多个条件,多个条件之间需要通过逻辑运算符连接

逻辑与:默认是逻辑与的关系
例:查询年龄大于或等于18,并且性别为1的学生
db.stu.find({age:{$gte:18},gender:1})

逻辑或:使用$or
例:查询年龄大于18,或性别为0的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:1}]})

and和or一起使用
例:查询年龄大于18或性别为0的学生,并且学生的姓名为gj
db.stu.find({$or:[{age:{$gte:18}},{gender:1}],name:'gj'})

4.数据的范围运算符:

使用"$in","$nin" 判断是否在某个范围内

例:查询年龄为18、28的学生
db.stu.find({age:{$in:[18,28]}})

5.数据的自定义的查询:

使用$where后面写一个函数,返回满足条件的数据

例7:查询年龄大于30的学生
db.stu.find({$where:function(){return this.age>20}})

6.数据的Limit与skip:

Limit
方法limit():用于读取指定数量的文档

语法:
db.集合名称.find().limit(NUMBER)
参数NUMBER表示要获取文档的条数
如果没有指定参数则显示集合中的所有文档

例:查询2条学生信息
db.stu.find().limit(2)

skip
方法skip():用于跳过指定数量的文档
语法:
db.集合名称.find().skip(NUMBER)
参数NUMBER表示跳过的记录条数,默认值为0

例:查询从第3条开始的学生信息
db.stu.find().skip(2)

两者同时使用
方法limit()和skip()可以一起使用,不分先后顺序

创建数据集

查询第5至8条数据
db.stu.find().limit(4).skip(5)
或
db.stu.find().skip(5).limit(4)

7.数据的投影:

在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段
如:一个文档有5个字段,需要显示只有3个,投影其中3个字段即可

语法:
参数为字段与值,值为1表示显示,值为0不显示
db.集合名称.find({},{字段名称:1,...})
对于需要显示的字段,设置为1即可,不设置即为不显示
特殊:对于_id列默认是显示的,如果不显示需要明确设置为0

例1
db.stu.find({},{name:1,gender:1})
例2
db.stu.find({},{_id:0,name:1,gender:1})

8.数据的排序:

在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段
如:一个文档有5个字段,需要显示只有3个,投影其中3个字段即可

语法:
参数为字段与值,值为1表示显示,值为0不显示
db.集合名称.find({},{字段名称:1,...})
对于需要显示的字段,设置为1即可,不设置即为不显示
特殊:对于_id列默认是显示的,如果不显示需要明确设置为0

例1
db.stu.find({},{name:1,gender:1})
例2
db.stu.find({},{_id:0,name:1,gender:1})

9.数据的统计个数:

count()
用于统计结果集中文档条数

db.集合名称.find({条件}).count()
db.集合名称.count({条件})

例1:统计男生人数
db.stu.find({gender:1}).count()

例2:统计年龄大于20的男生人数
db.stu.count({age:{$gt:20},gender:1})

10.数据的消除重复:

distinct()对数据进行去重
只支持一个field

db.集合名称.distinct('去重字段',{条件})

例1:查找年龄大于18的性别(去重)
db.stu.distinct('gender',{age:{$gt:18}})

以下是高高级的操作 仅供参考

目前还未深度学习 日后学习归来 在与君畅谈!!!

以上代码仅供个人学习参考 请勿商用 感谢!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值