–mangoDB
nosql --not only sql 非关系型的数据库
随着网站访问量的额上升,网站的数据库性能出现了问题,nosql出现了
优点:分布式计算、低成本、架构的灵活性、半结构化数据、没有复杂的关系
缺点:没有标准化、有限的查询功能、最终一直是不直观的程序
文档型存储
MongoDB是一个基于分布式,文件存储的nosql数据库
由c++编写,运行稳定,性能高
旨在为WEB应用提供可扩展的高性能数据存储解决方案
面向集合存储,易存储对象类型的数据
Ø 模式自由
Ø 支持动态查询
Ø 支持完全索引,包含内部对象
Ø 支持查询
Ø 支持复制和故障恢复
Ø 使用高效的二进制数据存储,包括大型对象(如视频等)
Ø 自动处理碎片,以支持云计算层次的扩展性
Ø 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言
Ø 文件存储格式为BSON(一种JSON的扩展)
Ø 可通过网络访问
支持json格式
maogodb将数据存储为一个文件,数据结构由键值(key=>value)组成
https://blog.csdn.net/weixin_44626569/article/details/90295129(sql术语与moangodb的比较)
数据库
-数据库的服务器
-服务器用来保存数据
-mongod用来启动服务器
-数据库的客户端
-客户端用来操作服务器,对数据进行增删改查的操作
mongo用来启动客户端
–基本命令
show dbs 显示所有数据库
use 数据库名 进入到指定的数据库中(在MongoDB中,不需要手动创建数据库和集合,创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合)
db 显示当前的数据库名
show collections 显示数据库中的所有集合
–数据库的CRUD操作
1.向数据库中插入文档
db.集合名.insert(doc)
例子:向test数据库中的stus集合中添加学生对象
{name:“孙悟空”,age:18,gender:“男”}
db.stus.insert({name:“孙悟空”,age:18,gender:“男”})
当我们向集合插入文档时,如果没有给文档指定_id这个属性,则数据库会自动为文档添加。
该属性作为文档的唯一标识
_id可以自己指定,数据库就不会自己添加了,但是自己指定_id一定要确保唯一性。
其他插入方法:
db.<collection>.insertont() --插入一个文档
db.<collection>.insertMany() --插入多个文档对象
2.查询
db.集合名.find()
查询当前集合中的所有文档,返回的是一个数组,可以用下标索引
find()用来查询集合中所有符合条件的文档
{}表示查询集合中所有的文档
{字段名:值}
db.集合名.findone()
用来查询集合中符合条件的第一个文档,返回的是一个文档对象
db.集合名.find({}).count()
返回所有结果的个数
3.删除
db.集合名.remove()
db.集合名.deleteOne()
db.集合名.deleteMany()
-remove()可以根据条件删除文档,传递条件的方式和find()一样
默认删除所有符合条件的文档,但是第二个参数写一个true,则只会删除一个
如果只传递一个空对象为参数,则会删除所有文档,但是性能略差.
db.集合名.drop()
-会删除整个集合,性能高
注意!!!如果你的数据库只有一个集合,你把它drop()了,数据库就一块没了.
db.dropDatabase()
-删除数据库
真实的事情!一般的实际开发中是不会删除数据的,数据是最值钱的。
一般会在数据中添加一个字段,,来表示数据是否被删除。
4.修改
db.集合名.update(查询条件,新对象)
-update()默认情况下会用新对象代替旧的对象
-如果需要修改指定的属性,而不是替换需要使用修改操作符
$set:可以用来修改文档中指定的属性
-update()默认情况下只会改一个,如果想全部修改,再加一个参数{multi:true}
db.集合名.update({查询条件},{$set:{新对象}})
$unset:可以删除指定的属性
db.集合名.updateMany()
-同时修改多个符合条件的文档
db.集合名.updateOne()
-修改一个符合条件的文档
db.集合名.replaceOne()
-替换一个文档