什么是MongoDB ?
- MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。
- MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
MongoDB特点
- 模式自由 :可以把不同结构的文档存储在同一个数据库里
- 面向集合的存储:适合存储 JSON风格文件的形式
- 完整的索引支持:对任何属性可索引
- 复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移
- 自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器
- 丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
- 快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划
- 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
基本操作
- MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成
- MongoDB文档类似于JSON对象,字段值可以包含其他文档、数组、文档数组
- 安装管理mongodb环境
- 完成数据库、集合的管理
- 数据的增加、修改、删除、查询
配置文件在/etc/mongod.conf
默认端口27017
启动mongodb 服务
sudo service mongod start停止,停止后输入将不能启动shell
sudo service mongod stop重置服务
sudo service mongod restop启动mongodb客户端
mongo
终端退出连接
exit 或 ctrl+c
卸载mongodb数据库
删除 MongoDB 包
sudo apt-get purge mongodb-org
删除 MongoDB 数据库和日志文件
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
数据库基本命令
- 查看当前数据库名称
db
- 列出所有在物理上存在的数据库
show dbs
- 切换数据库 如果数据库不存在,则指向数据库,但不创建,直到插入数据或创建集合时数据库才被创建
use 数据库名称
- 查看当前数据库信息
db.stats()
db:当前数据库的名字。
collections:当前数据库的集合数。
objects:当前数据库所有集合总所包含的对象(即文档)的数量。
avgObjSize:每个文档的平均大小(以字节为单位)。
dataSize:此数据库中保存的未压缩数据的总大小,不是
指占有磁盘大小,单位是bytes。
storageSize:分配给此数据库的集合用于存储文档的空
间总量,也就是当前数据库占有磁盘大小,单位是bytes。
numExtents:当前数据库所有集合包含的扩展数量的统计。
indexes:数据库中包含的所有集合的索引总数,也就是system.indexes表数据行数。
indexSize:此数据库上创建的所有索引的总大小,单位是bytes。
- 数据库删除:删除当前指向的数据库,如果数据库不存在,则什么也不做
db.dropDatabase()
- 创建集合
- 语法
db.createCollection(name, options)
- 查看当前数据库所有集合
show collections:当前数据库的集合数。
- 删除集合
- 语法格式:
db.集合名称.drop()
如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false
数据的增删改查
- 语法
db.集合名称.insert(document)
注意:插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId
- 删除文档语法:
remove() 方法的基本语法格式如下所示:
db.collection.remove(
<query>,
{justOne: <boolean>,}
)
- 基本的数据查询
- 基本查询
db.集合名称.find({条件文档})
*
findOne():查询,只返回第一个
db.集合名称.findOne({条件文档})
例1:查询出姓名等于李某某的学生
db.stu.find({name:'李某某'})
- 更新文档MongoDB 使用 update() 和 save() 方法来更新集合中的文档。两个函数是有区别的。update() 方法
- update() 方法用于更新已存在的文档
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
}
)
网友评论