MongoDB_1_概念 数据类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MongoDB_1_概念 数据类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7733字,纯文字阅读大概需要12分钟。
内容图文
![MongoDB_1_概念 数据类型](/upload/InfoBanner/zyjiaocheng/919/84ed826251b542f388f4e4a8188cf1c2.jpg)
MongoDB_1
<< MongoDB_1_概念 数据类型 >>
数据存储阶段
文件管理阶段(.txt .doc .xls)
优点:
数据便于长期保存
数据可以大量存储
使用简单
缺点:
数据的存储结构比较随意
数据的查找修改效率较低
不方便扩展和程序调用
数据库管理阶段
优点:
数据格式化存储,便于操作
降低了数据的冗余,提高了增删改查的效率
方便程序调用和扩展
缺点:
使用上往往需要特定的语句或操作,相对复杂
数据库概念:
数据:能够输入到计算机中并被识别处理的信息集合。
数据结构:研究一个数据集合中,数据之间关系的学科。
数据库:按照数据结构,存储管理数据的仓库。
数据库:按照数据结构,存储管理数据的仓库。数据库是在数据库管理系统管理和控制下,
在一定介质上存储的数据集合。
数据库管理系统:数据库管理软件,用于维护建立数据库。
数据库系统:由数据库和数据库管理系统等开发工具组成的集合。
关系型数据库
采用关系模型(二维表)来组织数据结构的数据库。
eg.: Oracle DB2 SQLServer Mysql Sqlite
优点:
容易理解,逻辑类似常见的表格
使用方便,都使用sql语句进行数据操作,sql语句很成熟
数据的一致性高,冗余低,完整性好
相对非关系型,技术成熟,可以使用表关联等复杂操作
缺点:
每次数据操作都需要sql解析,消耗较大
关系型数据库内部操作往往都需要加锁,也影响了处理速度
不能很好的处理海量数据的高并发需求,读写能力差
由于数据的一致性等规定,灵活性也不高
非关系型数据库 (NoSql --> Not Only Sql)
优点:
并发能力强,读写速度快,可以更好应对海量数据并发需要
普遍比较灵活,容易扩展,弱化了数据的一致性
缺点:
通用性差,没有像sql那样一致的语句操作
灵活性强会导致一定的操作混乱
技术成熟度比关系型数据库要差
NoSql的使用情况
对数据一致性要求较低
应对数据提高并发存储的可能性较大
比较容易建立非关系型数据库模型
NoSql分类
键值型数据库:Redis
列存储数据库:HBase
文档型数据库:MongoDB
图形数据库
MongoDB数据库 (非关系型,文档型数据库)
特点:
1.由c++编写的数据库管理系统
2.支持丰富的增删改查操作
3.有丰富的存储类型,技术相对成熟
4.支持众多的编辑语言操作
5.使用方便,便于扩展和部署
MongoDB的安装
linux: sudo apt -get install mongodb
安装位置:/var/lib/mongodb
配置文件位置:/etc/mongodb.conf
命令集位置:/usr/bin
手动安装:
1.www.mongodb.com 下载对应系统的安装包
2.将压缩包解压到一个目录下,/usr/local
3.进入解压后的目录,里面的bin目录即命令集所在目录,将这个目录(bin)路径加入环境变量即可。
eg.: 将/opt/mongodb/bin/ 加入环境变量,终端执行
PATH=$PATH:/opt/mongodb/bin
export PATH
4.如果不想每次启动都执行则将以上两句写入主目录下的 .bashrc中
MongoDB 命令
1.设置数据库的存储位置:momgod --dbpath 目录
eg.:将database目录设置为数据
mongod --dbpath database
设置数据连接接口:mongod --port port
(如果不设置,则默认端口为 27017)
启动MongoDB操作界面(mongo sbell):mongo
退出界面:quit() 或者 ctrl+c
MongoDB数据库结构
键值对 >> 文档 >> 集合 >> 数据库
ID name age
1 lily 18
2 lucy 17
----------±-------------±---------
mysql: mongodb: 含义:
----------±-------------±---------
database database 数据库
table collection 表/集合
colum field 字段/域
row document 记录/文档
index index 索引
----------±-------------±---------
MongoDB操作命令
创建数据库:use database
eg.: 创建一个叫stu的数据库
use stu
- use 实际是选择使用哪个数据库,当这个数据库不存在时会自动创建这个数据库。
- 使用use创建数据库,并不会马上建立起来,而是需要真正插入数据时才会产生。
查看系统中数据库:show dbs
数据库命名规则:
1.(默认)使用utf-8字符(支持中文)
2.不能含有 空格 . / \ '\0’字符
3.长度不超过64字节
4.不要和系统数据库重名
全局变量db:db变量代表当期正在使用的数据库
- 如果不选择任何数据库,db为test
删除数据库:db.dropDatabase() # 删除db代表的数据库
数据库的备份和恢复:
备份数据库:mongodump -h dbhost -d dbname -o dir
说明:dbhost表示主机地址;dbname表示要备份的库名;dir表示备份的目标目录
eg.: mongod -h 127.0.0.1 -d stu -o .
备份本机中(127.0.0.1)的(stu数据库)到(当前目录)
数据库文件恢复:mongorestore -h dbhost:port -d dbname path
说明:dbhost:port表示主机地址:默认端口;dbname表示要恢复到的目标库名;path表示被恢复文件的路径
eg.: mongorestore -h 127.0.0.1:27017 -d student ./stu
获取数据 到本机 的student数据库中, 从stu
数据库的监控命令:
mongostat: 查看数据库运行状态
insert query update delete: 每秒执行增删改查的次数
command: 每秒执行mongo命令的次数
flushes: 和磁盘交互情况
vsize res:使用虚拟内存和物理内存情况
time: 运行时间
mongotop: 检测每个数据库中数据表的读写情况
ns: 数据集合
totol: 总时长
read: 读时长
write: 写时长
关于集合(collection)的操作
创建集合 :
方法1: db.createCollection(collection集合名)
eg.: db.createCollection(‘class1’)
#创建集合class1
方法2: 当插入数据时,需要指定集合,如果集合不存在,则自动创建
eg.: db.class2.insert({‘name’:‘阿宝’,‘age’:‘35’,‘sex’:‘m’})
#插入数据时class2不存在则自动创建这个集合
查看数据库中集合:show collections 或者 show tables
< 集合的命名规则 >:
1.使用utf-8字符
2.不能含有 \0 字符
3.不要以system.开头,这是系统集合默认开头
4.不要和关键字重复
< 删除集合 >:db.collection.drop()
eg.: db.class.drop() #删除数据库中class集合
< 集合重命名 >:db.collection.renameCollection(‘newname’)
eg.: db.class.renameCollection(‘class0’)
#将集合class重命名为class0
文档
什么是文档?
- 文档是mongodb数据库中基本的数据组成,形式类似于文档
- 文档由键值对构成,每个键值对表达一个数据项
- mongodn文档属于bson类型数据
- 文档中的键值对是有序的
键:即文档的‘域’,表达‘值是什么内容’。
键的命名规则:
1.使用utf-8字符串
2.不能使用\0
3.一个文档中的键不能重复
值:即数据库存储的数据
类型 值
---------±----------±------------
数字 整数 小数
布尔类型 true false
Array 数组
Date 日期时间
Timestamp 时间戳(时间结点)
String 字符串
Binary data 二进制字符串
Null 空 null
Object 内部文档(对象)
regex 正则表达式
code 代码
ObjectID ObjectID字典
---------±----------±--------------
ObjectID类型
“_id” : ObjectId(“5bd13bb108b2199bcf4586e6”)
_id: 当插入mongodb文档时,会自动生成_id域作为主键id.
值: ObjectId数据,为了和其他的值不重复,
(24位16进制编码:8位文档创建时间,6位机器ID,4位进程ID,6位计数器)。
集合中的文档
1.每个集合中的文档格式可以不同
2.一个集合当中存储的数据尽量体现相同的内容
3.文档的表达,层次尽量不要太多
插入文档:
< 插入单个文档 >:db.collection.insertOne()
功能:插入一条文档
参数:要插入的文档
eg.: db.class0.insertOne({‘name’:‘Lucy’,‘age’:‘17’,‘sex’:‘W’})
#向class0中插入一个文档{… }
db.class.find(): 查看插入结果(文档)
数据操作时,键可以不加引号
可以自己添加_id域,但是_id域的值不能重复
一个集合中插入的文档是有序的
< 插入多条文档 >:db.collection.insertMany([{ },{ },{ }…])
功能:插入多个文档
参数:数组中包含多个文档
eg.: db.class2.insertMany([{name:‘傻屌’,age:30,sex:‘w’},{name:‘阿花’,age:‘18’,sex:‘w’}])
< 插入文档 >:db.collection.insert()
功能:等于 insertOne + insertMany
< save插入文档 >:db.collection.save()
功能:插入文档,用法与insert相同
参数:与insert相同,可以插入一条或多条文档
eg.: db.class1.save([{name:‘小明’,age:22,sex:‘M’},{name:‘小张’,age:22,sex:‘M’}])
如果要插入的文档_id已经存在,则会替换掉原有文档的内容
eg.: db.class0.save({"_id":1,“name”:“Hanna”,“age”:28,“sex”:“W”})
< 获取集合对象 >
db.getCollection(collection_name)
eg.: db.getCollection(‘class0’) <==> db.class0
查找操作:
mysql: select … from table where …
mongodb: db.collection.find(query, field)
< 查找集合中所有内容(文档) >: db.collection.find()
类似于select * from table
find(query, field)
功能:查找所有符合条件的文档
参数 query: 表示【筛选条件】,是一个键值对文档,默认表示查找所有内容。
eg.: db.class0.find({age:17}) # 筛选所有年龄为17的文档
参数 field:
表示要【查找的域】,是一个键值对文档,用0表示不查找某个域,1表示查找某个域。
eg.: db.class0.find({},{_id:0,name:1}) # 不查找_id,查找name
- 当某个普通域设置为 0 时,表示该域不查找,其他的域的域查找; 如果设置为 1 则表示查找,其他的不查找。
- 对于查找的域,在表达式值0和1不能在参数中同时出现。
- _id域比较特殊,如果不想查找必须明确 _id:0。
findOne(query, field)
功能:查找第一条符合条件的文档
参数:使用方法同find
eg.: db.class0.findOne({age:17},{_id:0}) # 筛选所有年龄为17的第一条文档
作业:
总结关系型数据库和非关系型数据库的区别
复习数据库创建,集合操作,数据插入方法
内容总结
以上是互联网集市为您收集整理的MongoDB_1_概念 数据类型全部内容,希望文章能够帮你解决MongoDB_1_概念 数据类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。