mongodb 基于Linux下基本概念陈述以及语法(crud)使用讲解

各位同学,上篇文章我们已经学习了如何安装mongodb,传送门:Linux 基于CentOS7.3安装MongoDB 3.4以及设置账号密码,今天这篇文章,我们来分析一下mongodb的优势以及它的各种增删改查语法,版本我们使用的是3.4版本

一、基础知识

1.1 简介

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

1.2 特点

传统型数据库: 结构化数据, 定好了表结构后,每一行的内容,必是符合表结构的,就是说–列的个数,类型都一样.
mongo文档型数据库: 表下的每篇文档,都可以有自己独特的结构(json对象都可以有自己独特的属性和值)

二、mongodb命令

2.1 入门命令

show dbs            //查看当前数据库
show databases     //查看当前数据库(2.4以上版本)
use 库名            //选库
show collections   //查看当前库下的collections(相当于查看mysql库下的表)
show tables		   //查看当前库下的collections(相当于查看mysql库下的表)
db.createCollection(‘collectionName’)   //创建collection
db.表名.insert(json)//隐式创建表
db.表名.drop()      //删除表
db.dropDatabase()  //删除当前所在的路径下的库
db.help()          //帮助文档

因为mongodb这类非关系型数据库其实本身就不存在库和表的概念,所以库和表的创建都是支持隐式创建的(即只要选择使用的库,以及在插入数据时指定表名就会将库和表自动创建出来),所以各位同学不要太被传统的关系型数据库的思想所约束。

2.2 新增操作(insert)

语法: db.collectionName.isnert(document);

例1:在user表中添加用户信息

db.user.insert({name:'beyondLi',age:18,hobby:['code','ball','run']})

注:可使用db.user.find()查看插入结果,后面我们会讲查询

例2:在user表中添加用户信息并指定id

db.user.insert({_id:1,name:'beyondLi',age:18,hobby:['code','ball','run']})

注:_id字段为mongo必自带字段

例3:在user表中添加多个用户信息

db.user.insert([{_id:2,name:'zhangsan',age:20,hobby:['code','ball','game']},{_id:3,name:'lisi',age:22,hobby:['paly','tv']},{_id:4,name:'wangwu',job:'teacher',sex:'man',salary:20000}])

好了,我们先插入这么几条数据,我们来做为基础数据,为后面使用

在这里插入图片描述

2.3 删除操作(remove)

语法: db.collection.remove(查询表达式, 选项);
选项是指 {justOne:true/false},是否只删一行, 默认为false,即符合条件的全部删除

例1:删除user表中年龄为20岁的人

db.user.remove({age:20})

例2:删除user表中年龄为18岁的人并且只删除一条

db.user.remove({age:18},true)

2.4 更新操作(update)

语法:db.collection.update(查询表达式,新值,选项);

mongodb的更新操作支持很多更新行为,例:修改value值、修改key名、添加/删除key值等操作,这里只给大家举例一些常用的关键字,具体的可以到mongodb文档中进行具体学习。

例1:将user表中name为lisi的name值改为lisihuan(一条)

db.user.update({name:'lisi'},{$set:{name:'lisihuan'}})

注1:这里如果不使用$set ,则会将name为lisi的这条数据整体改为 {name:‘lisihuan’} 了,而不是只修改了name字段
注2:这里默认情况下只是将name为lisi的一条数据改为lisihuan,如果当表达式中查出的数据为多条,也只会修改其第一条,如果需要全部修改则需要添加参数multi:true,最终书写如下

db.user.update({name:'lisi'},{$set:{name:'lisihuan'}},{multi:true})

即:将user表中所有name为lisi的值改为lisihuan

例2:修改user表中名称为wangwu,将名称修改为beyondLi71、删除job字段、将sex字段重命名为gender、为salary字段增加2000元

db.user.update({name:'wangwu'},{$set:{name:'beyondLi71'},$unset:{job:1},$rename:{sex:'gender'},$inc:{salary:2000}})

2.5 查询操作(find)

其实,在上面的删除和修改时,我们已经对查询操作有了一些接触,现在我们就要详细的说一下查询操作。

语法:db.collection.find(查询表达式,查询的列);

例1: 查询user表中所有内容

db.user.find()

例2: 查询user表中所有数据的name字段

db.user.find({},{name:1,_id:0})

注:mongo默认会显示_id字段,这里我们只要name字段,所以还要设置不展示_id字段

例3:查询user表中age字段值为18的name值

db.user.find({age:18},{name:1,_id:0})

例4:查询user表中name值不等于BeyondLi的值

db.user.find({name:{$ne:'beyondLi'}})

例5:查询user表中hobby值包含code值

db.user.find({hobby:{$in:['code']}})

例6:查询user表中hobby值不包含code值

db.user.find({hobby:{$nin:['code']}})

例7:查询user表中hobby中既有code又有run的值

db.user.find({hobby:{$all:['code','run']}})

例8:查询user表中age大于15值

db.user.find({age:{$gt:15}})
注:$gt(大于)、$lt(小于)、$gte(大于等于)、$lte(小于等于),使用与上述相同,不做赘述

例9:查询user表中name为beyondLi并且age为18的信息

db.user.find({$and:[{name:'beyondLi'},{age:18}]})

例10:查询user表中name为beyondLi或age大于20的信息

db.user.find({$or:[{'name':'beyondLi'},{age:{$gt:20}}]})

例11:查询user表中全部数据只获取第二页的第一条,每页显示一条(分页)

db.user.find().skip(1).limit(1);

好了,以上就是一些查询表达式,当然这里并不是全部,还有一些可以根据数据类型、某列是否存在、取余等操作,同学们可以去mongodb官网进行查找和学习 https://docs.mongodb.com/v3.4/reference/operator/query/or/index.html

三、总结

好了,以上就是关于mongodb的一些基本知识以及使用语法,接下来本人会进行与springboot的结合的文章编写,将mongodb融入到我们的实际项目中。

你可能感兴趣的:(数据库,mongodb)