mongodb数据库

本文详细介绍了MongoDB数据库的基本操作,包括启动命令、数据库与集合的创建与删除、数据的增删改查操作,以及条件查询、排序、分页等高级功能。MongoDB作为一款非关系型数据库,其灵活的数据存储方式和丰富的查询语法使得数据管理变得高效便捷。
摘要由CSDN通过智能技术生成
什么是数据库?

存储数据的容器,比如TXT文档,json文件、xml文件、execl、MySQL、Oracle、mongodb、redis、sqlite、office access、office Vf、sqlserver、db2;

专业数据库存储软件:MySQL、Oracle、SqlServer、db2、mongodb

常规使用的关系型数据库:mysql,Oracle、SqlServer,这些数据库的语法统一遵循使用sql语法

为什么是关系型数据库

就一个例子:需要给你做一套软件,这套软件就需要数据库去存储数据,比如要存储:员工信息(工号、姓名、年龄、生日),员工考勤(工号,迟到,早退,请假,旷工),部门信息(部门名称,部门人员),工资表(底薪,绩效、提成、考勤扣款、加班费)

关系型数据库需要提前定义好数据结构(表结构);数据如果不符合数据结构的特征会无法存储或报错(比如数据库定义了:工号,姓名,年龄、但是实际的数据是:地址,爱好等操作,这是无法存储的)

一般的非关系型数据库都是nosql(不需要sql语法,一般都是实体对象,通过使用对象的属性或方法来操作数据),非关系数据库往往不需要提前定义好数据结构,以mongodb来说,存储数据的时候使用的是类似json的bson,比如[{name:‘lisi’},{name:‘zhangsan’}],一般在设计的时候需要专门给一台数据库服务器。建立一个公司的服务器结构需要很多服务器(逻辑处理服务器,视频处理服务器,文件服务器,数据库服务器)

常规 的数据使用一般可以分为:关系型数据库和非关系型数据库(nosql)

mongod的服务器启动命令:

mongod --dbpath 文件夹路径

mongod的客户端使用命令:

mongo

注意通过mongo命令只是连接上了数据库服务器,数据库服务器上还有很多数据库,我们真正要操作的是这些数据库

数据库->集合->数据

show dbs:列出当前所有数据库,默认列出(admin、config、和local三个数据库),都是默认的,不要删除和修改

db:显示当前正在操作的数据库(默认都是test,为什么test没有在show dbs命令中显示呢?因为当前test数据库里面还没有数据)

数据库操作

use:如果数据库存在切换到当前数据库,如果不存在则创建,例如:use student

db.dropDatabase():删除数据库(需要使用use先切换到被删除的数据库上)

集合操作

db.createCollection(‘集合名字’):创建一个集合

show collections:显示当前数据库的集合列表

db.集合名字.drop():删除指定集合

C creat R read U update D delete 增删改查
1.新增操作

db.集合名字.insert({接送数据}),示例:db.movie.insert({name:‘ze’,age:10})

db.集合名.insert([{json数据},{json数据},…]) ,新增多条数据

示例:db.insert.([{name:‘ss’,age:10},{name:‘ww’,age:11}])

db.集合名.insertOne.({json数据}),示例:db.movie.insertOne({name:‘aa’,age:12}) 将单个文档插入到一个集合,

db.集合名.insertMany([{json数据},{json数据},…]),示例:db.movie.insertMany([{name:‘q’},{name:‘w’}]) 将文档数组插入到一个集合,

2.查询操作

db.集合名.find(), 示例:db.movie.find()

db.集合名.find().pretty(), 示例:db.movie.find().pretty();pretty没有实际的含义,仅在命令行或查询客户端可用,在代码中不可用

带条件的查询

db.film.find();等价于db.film.find({}) 示例:db.film.find({name:‘lisi’}) 查询film集合中name等于lisi的数据

且操作

db.film.find({name:‘lisi’,age:15}) 查询film集合中name等于lisi且age等于20的数据,如果不存在则没有返回

或操作

db.film.find({$or:[{name:‘lisi’,age:10},{name:‘wangwu’}]}) if((name==‘lisi’&&age25)||(name’wangwu’))

非操作($ne not equa)

db.film.find({name:{$ne:‘lisi’}}) 查询film集合中name不等于lisi的数据

$in

db.film.find({age:{$in:[20,30,40]}}) 查询film集合中age在[20,30,40]集合中的数据,注意不是在20~40这个区间

大于操作($gte great than equa)

db.film.find({age:{$gt:20}}) 查询年龄大于20岁的

大于等于操作($gte great than equa)

db.film.find({age:{$gte:20}}) 查询年龄大于等于20岁的

小于操作($lt less than)

db.film.find({age:{$lt:20}}) 查询年龄小于20岁的

小于等于操作($lte less than equa)

db.film.find({age:{$lte:20}}) 查询年龄小于等于20岁的

排序

db.film.find().sort({age:-1}).pretty() 按照年龄的降序排序,如果为1表示按照年龄升序排序

db.film.find().sort({age:-1,name:-1}).pretty() 多排序条件的情况,当第一排序条件age无法筛选数据的时候会根据第二排序条件name在排

分页
page123
skip036

公式:(page-1)*3

db.film.find().skip(0).limit(3).pretty(); 从0开始查询查询3tiao

db.film.find().skip(3).limit(3).pretty(); 从3开始查询查3条

db.film.find().skip(6).limit(3).pretty(); 从6开始查询查3条

3.更新操作

db.集合名字.update({查询条件},{KaTeX parse error: Expected 'EOF', got '}' at position 11: set:{修改内容}}̲) 示例 db.film.u…set:{age:20}}) 注释:查询name等于lisi的数据,把这条数据的age修改为20;注意update只修改满足查询条件的第一条数据(比如name=lisi 的人有很多,但是只修改第一条)

db.film.updateMany({查询条件},{$set:{修改内容}}),用来修改所有满足条件的数据

db.film.updateOne({查询条件},{$set:{修改内容}}) 用来修改所有满足查询条件的第一条数据

db.film.update({’_id’:ObjectId(‘5d846a006902035830294317’)},{$set{age:88}}) 根据id来修改 ObjectId(“5d846a006902035830294317”)

KaTeX parse error: Expected '}', got 'EOF' at end of input: …{name:'lisi'},{currentDate:{lastModify:true}}) true 表示添加当前时间

KaTeX parse error: Expected '}', got 'EOF' at end of input: …{name:'lisi'},{inc:{age:1}}) 当前age+1 如果是-1表示age减1

KaTeX parse error: Expected '}', got 'EOF' at end of input: …{name:'lisi'},{mul:{age:2}}) 当前age乘2

$min(给定值小于已有值才更新,否则不更新)

$max(给定值大于已有值才更新,否则不更新)

KaTeX parse error: Expected '}', got 'EOF' at end of input: …{name:'lisi'},{rename:{title:‘brand’}}) 修改后数据不在有title字段,被修改成brand字段

KaTeX parse error: Expected '}', got 'EOF' at end of input: …{name:'lisi'},{unset:{brand:’’}}) 执行后brand字段和其内容就被删除了

修改数组的操作

KaTeX parse error: Expected '}', got 'EOF' at end of input: …{name:'lisi'},{push:{title:‘阿里’}}) 如果title字段不存在则新增该字段,且该字段为数组,内容为[‘阿里’],$push已有字段的时候,该字段需要是数组才行,否则报错

KaTeX parse error: Expected '}', got 'EOF' at end of input: …{name:'lisi'},{pop:{car:‘BMW’}}) 把car数组中所有内容为BMW的元素删除

KaTeX parse error: Expected '}', got 'EOF' at end of input: …{name:'lisi'},{set:{‘car.0’:‘BMW’}}) ;把car数组中的第0个元素内容修改为BMW; db.film.update({name:‘lisi’},{$set:{‘car.1’:‘BMW’}});把car数组中的第一元素内容修改为BMW

4.删除操作

db.集合名.remove({查询条件});示例:db.film.remove({name:‘lisi’}) 删除所有满足条件的数据

db.集合名.deleteOne({查询条件});示例:db.film.deleteOne({name:‘lisi’}) 删除满足条件的第一个数据

db.集合名.deleteMany({查询条件});示例:db.film.deleteMany({name:‘lisi’}) 删除所有满足条件的数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值