MongoDB数据库
MongoDB简介
介绍
MongoDB是一种可扩展的敏捷NoSQL数据库,其中的Mongo源自单词humongous。MongoDB基于NoSQL文档存储模型;在这种模型中,数据对象被存储为集合中的文档,而不是传统关系型数据库中的行和列。文档是以二进制JSON(BSON)对象的方式存储的
其对大小写的要求是比较敏感的
特点
1、面向文档
MongoDB是面向文档的,数据在数据库中的存储格式与您要在服务器端脚本和客户端脚本中处理的格式非常接近。这避免了将数据在行和对象之间进行转换
2、高性能
MongoDB是市面上性能最高的数据库之一。在当今世界,很多用户都与网站交互,因此拥有能够支持庞大流量的后端至关重要
3、高可用性
MongoDB的复制模型使其很容易保持高可用性,同时能够提供高性能和高可扩展性
4、高可拓展性
MongoDB的结构使得能够将数据分布到多台服务器,从而轻松地实现横向扩展
5、安全性
MongoDB将数据存储为对象,而不使用SQL字符串,因此对SQL注入攻击(通过浏览器在Web表单中输入SQL语句,从而威胁DB的安全)免疫
进入退出
直接输入mongo
进入交互模式
输入exit
退出交互模式
MongoDB操作
库操作语句
- 显示所有库
show dbs
如果数据库里面没有任何数据,其不会显示该数据库
- 切换数据库
use data_name
当数据库不存在时会自动创建
- 删除数据库
db.dropDatabase()
退出后会彻底删除
即:进入哪个数据库就删除哪个数据库
- 查看在哪个数据库
db
默认会自动进入test库
集合操作语句
- 创建集合
db.createCollection('set_name')
- 默认创建
进入数据库之后,可以不用创建集合,当插入一个不存在的集合时,会自动创建集合
- 显示所有集合
show collections
- 删除集合
db.set_name.drop()
文档操作
添加文档
- 插入单条数据
db.set_name.[insert | insertOne](document)
db.student.insert({'name':"make",'age':18})
- 插入多条
db.set_name.[insert | insertMany]([{document1}, {document2}])
db.student.insert([
{'name':'kongshan', 'age':18},
{'name':'yefeng', 'age':19}
])
多条需要用中括号括起来
查询文档
find
方法
- 查询所有内容
db.set_name.find()
db.student.find()
- 格式化显示出来
db.set_name.find().pretty()
db.student.find().pretty()
- 带条件查询
db.set_name.find({条件}).pretty()
db.student.find({'name':"make"}).pretty()
- and和or
and的使用,直接用逗号分割即可
db.student.find({name:"budong", age:18})
or的使用 $or
[{key1:value1}, {key2:value2}]
db.student.find({name:"budong", $or:[{"name":'kongshan'}, {"_id":{$ne:1}}] })
- 比较运算符
操作符 | 描述 | 解释 |
---|---|---|
$gt | 大于 | greater than |
$gt | 大于等于 | gt equal |
$lt | 小于 | less than |
$lte | 小于等于 | lt equal |
$ne | 不等于 | not equal |
$eq | 等于 | equal |
使用方法:age:{$ne:20}
修改文档
-
修改数据
db.set_name.updata(<query>,<update>,{multi:<bollen>})
db.class.update({age:18},{$set:{age:20}},{multi:true})
一定要有$set
加了multi:true则是修改多行,默认修改单行
多行修改:还可以把update改成updateMany
-
全文档替换
将整个文档修改为提供的数据
db.student.update({name:'yefeng'}, {age:27})
将名字为yefeng的数据全部替换为age:27
删除文档
- 删除一条数据
db.set_name.remove({name:"make",justOne:true})
- 删除多条数据
db.set_name.remove({age:18})
- 删除所有文档
db.set_name.remove({})
- 新方法
db.set_name.deldteOne({条件})
db.set_name.deleteMany({条件})
remove()
方法 并不会真正释放空间
需要继续执行db.repairDatabase()
来回收磁盘空间
db.repairDatabase()
本文来自博客园,作者:Kenny_LZK,转载请注明原文链接:https://www.cnblogs.com/liuzhongkun/p/15723456.html