简介
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB是属于非关系型数据库一类的,在其中是属于文档数据库
三个概念
数据库(dataBase)
数据库是一个仓库,在仓库中可以存放集合
集合(Collection)
集合类似于数组,在集合中可以存放文档
文档(document)
文档数据库中的最小单位,我们存储和操作的内容都是文档
其实这种概念很像数据库、表、字段的关系
今日内容
对文档的增、删、改、查
对列表的操作
增
insert()
#该语句可以向集合添加一个或多个文档
db.collection.insert();
注意点:
- 当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加下划线 _id该属性用来作为文档的唯一标识
- _id也可以自己进行指定,但是需要注意的是,自己指定也需要确保它的唯一性
- _id是根据时间戳和机器码生成的所以确保不会重复
添加一条数据
db.user.insert({name="张三",age="18",sex="男"});
添加多条数据
db.user.insert([{name="张三",age="18",sex="男"},
{name="李四",age="20",sex="女"}],
....);
不需要自动生成的_id自己指定
db.user.insert({_id:"hello",name:"王五",age:"20",gender:"男"});
还有两个方法,是insert()进行细致的化分
- insertOne() 插入一个文档对象
- InsertMany() 插入多个文档对象
//插入一个文档对象
db.collection.insertOne()
//插入多个文档对象
db.collection.insertMany()
删
remove()
删除符合条件的所有文档(默认情况下会删除多个)
db.book.remove({title:"三国演义"})
因为有两个符合条件的数据,所以就删除了两个
deleteOne()
db.book.deleteOne({press:"人民出版社"})
修改前:
修改后:
并没有删除所有符合条件的,而是删除了第一个符合条件的字段
deleteMany()
删除多个符合条件的字段
db.book.deleteMany({data:"2019-1"})
修改前:
修改后:
drop()
直接删除集合
db.book.drop()
还有一种方式
db.book.remove({});
改
update()
在修改数据之前都需要将附加一个查询条件然后再修改
//修改查询到数据的值
db.collection.update(查询条件,新对象);
使用update()时默认情况下会使用新对象来替换旧的对象
db.book.update({title:"三国演义"},{data:"2021-11"});
虽然这个效果我演示不出来,不知道是版本比较高还是怎么的,但是在看尚硅系列视频时这样编写语句时,是会将整行的数据直接替换为data:"2021-11"这一个字段的
好像新版本的MongoDB强制了$符号的使用
这就不纠结了,那就讲讲$符吧
$Set
$Set修改文档中的指定属性
原数据:
1.修改单个数据
//修改单列数据
db.book.update({title:"三体"},{$set:{data:"2022-01"}})
修改后:
2.修改多个数据
//也可以修改多列数据
db.book.update({title:"三体"},{$set:{data:"2022-01"}})
修改后
3.配合查询的Criteria来使用(Criteria这个查询细讲)
修改前:
db.book.update({data:{$lt:"2019"}},{$set:{data:"2019-1"}});
修改后:
$unSet
$unSet 可以用来删除文档的指定属性
使用修改器 $unSet时,不管是后面是1还是其余的字符串都能删除该目标键
db.book.update({title:"三体2"},{$unset:{"data":1}});
修改后:
updateMany()
可以一次修改多个字段
db.book.updateMany({title:"三国演义"}, {$set:{data:"2022-3",press:"文学"}})
修改前:
修改后:
其实使用update也是可以完成修改多条数据的操作的
通过属性multi
db.book.update(
{title:"三国演义"},
{$set:{press:"国学经典"}},
{multi:true}
)
replaceOne()
替换原先的数据
db.book.replaceOne({title:"西游记"},{title:"西游记2",press:"名著",data:"2001-11"})
查
find()
查询所有
db.book.find(); #返回的是一个数组
- find()用来查询所有符合条件的文档
- find()可以接收一个对象作为条件查询
- {}表示查询集合中的所有文档
条件查询
单个条件查询
db.book.find({title:"第一行代码"})
多个条件一起查询
db.book.find({press:"人民出版社",title:"水浒传"})
findOne()
查询集合中符合条件的第一个文档对象
db.book.findOne()
count()
查询集合中数据的总条数
db.book.count()
这章就先简单介绍一下mongoDB简单的CRUD操作,下一章会着重介绍MongoDB的查询操作