Part 2 MongoDB 的使用

Part 2 MongoDB 的使用

一 关系型数据库和非关系型数据库
1.关系型数据库
采用关系模型来组织数据结构的数据库
( Oracle DB2 [IBM] SQLServer [微软] Mysql Sqlite [python基础库全面支持] )
优点:容易理解,类似我们常见的表格模型。
使用方便,都是通过sql语句进行操作,sql语句成熟。
易于维护,完整性好,数据一致性高,降低冗余。
技术成熟,可以使用外连接等比较复杂的操作。
缺点:不能很好的满足高并发的需求,每次操作需要SQL语句需要解析。
2.非关系型数据库
优点:高并发,大数据下读写能力强
支持分布式,容易扩展
弱化了数据结构,降低了数据的一致性
缺点:没有join等复杂的操作
通用性差(不同的nosql数据库有不同的使用方法)
操作灵活即容易混乱
3.非关系型数据库(Nosql数据库)的分类
(1)键值型数据库 ( Redis oracle BDB Tokyo )
(2)列存储数据库( HBase )
(3)文档型数据库( MongoDB CouchDB )
(4)图形数据库

二 什么是Mongodb
1.是一个文档型非关系型数据库
2.由C++编写的数据库系统软件
3.支持丰富的查询操作
4.支持众多编程语言的接口(python ruby c++ c# PHP)
5.使用简单,便于部署
6.数据格式丰富
7.支持分布式扩展

三 配置Mongodb环境
1.下载对应系统的安装包 www.mongodb.com
2. 选择安装目录 (/user/local /opt)
选择一个位置将安装包解压
3.进入解压后的文件夹,将bin目录添加到环境变量
4.PATH = $PATH: /usr/test/mongodb/bin/
Export PATH
将这两句添加到linux自动执行脚本
/etc/rc.local 或者 /etc/bash.bashrc
5.重启系统
6.设置数据库的存储位置
Sudo mkdir -p /data/db
Mongodb --dbpath /data/db

四 存储数据和pymysql的一些概念区别
Mysql Mongodb 含义
Database database 数据库
Table collection 表/集合
Column field 字段/域
Row document 记录/文档
Index index 索引

五 一些基本操作
(1).创建数据库 use databasename
(2)查看当前数据库系统中的数据库 show dbs
(3)数据库的删除 db.dropDatabase( )
(4)集合的创建 db.createCollection( collection_name)
(5)删除集合 db.collection_name.drop( )
(6)修改集合名称 db.collection_name.renameCollection(“newname”)
(7)插入文档 db.collection_name.insert( )
(8)查看已插入文档 db.collection_name.find( )
(9)插入多条文档 db.collection_name.insert ( [ { },{ },{} ] )
六 mongodb中支持的数据类型
字符串(string):普通字符串
整型:整数,32位整型
布尔型:True False
浮点型: 存储小数
数组类型(列表类型): 列表数组
时间类型: 时间日期
文档类型: 内部文档
空值: NULL
字符串(特殊字符):symbol
时间戳: 时间节点
二进制数据:Binary data (文件流 图片 音频 视频)
代码:Code
正则表达式:regex
ObjectID: 文档自动生成的字符串ID值

七 更删改查
1.查找文档
(1)db.collection_name.find( query,field)
功能:查找所有符合筛选要求的文档
参数: query: 筛选条件 相当于where子句
Field:展示的域 0表示不展示该域 1表示展示该域
返回值:返回所有符合要求的文档
(2)db.collection_name.findone( )
功能:查找符合条件的第一条文档
参数:同find
返回值:返回查找到的文档
比较操作符
$eq :等于 = $lt : 小于 < $lte : 小于等于 <=
$gt :大于 > $gte :大于等于 >=
$ne 不等于
$in 包含 $nin 不包含
逻辑操作符
$and 逻辑与 (中括号)
$or 逻辑或
$not 逻辑非(逻辑取反)
$nor 既不也不(集合中的条件都不满足的文档)
数组查找
$all 查找数组中包含多项的文档
$size 查找数组中项数为指定个数的文档
$slice 显示数组中的前几项
$exits 判断一个域是否存在
$mod 通过整除余数进行查找
$type 查找值为指定数据类型的文档
和查询结果相关的几个函数
(1).distinct( )
功能:查看一个集合中某个域的值所覆盖的范围
(2).pretty( )
功能:将查询结果进行一个格式显示
(3).limit( n )
功能:查询结果显示前n个文档
(4).skip(n)
功能:查询结果跳过前n个文档
(5).count( )
功能:对查询结果进行计数
(6).sort( )
功能:按照指定的字段进行排序
参数:键值对 某个域按照升序排序则值为1,将序则值为-1

2.删除文档
db.collection_name.remove(query,justone )
功能:删除文档
参数:
query 定位要删除的文档数据,类似sql where 用法和查找相同
justone 给bool值,默认为false,表示删除所有符合条件的数据文档;如果赋值为true,则表示只删除第一条符合条件的文档。

3.更新文档
db.collection_name.update(query,update,upsert,multi)
功能:更新一个文档数据。
参数:query:定位要更新的数据 相当于where用法同查找。
update: 将数据更新为什么 相当于set 需要配合修改器操作符来使用。
upsert: bool值 默认为false 表示当定位的文档不存在则无法修改。如果设置为true,表示如果定位的文档不存在则插入这条文档。
multi:bool值 默认为false 如果query匹配的文档有多条则只修改第一条。如果设置为true,则修改所有匹配到的文档。

4.修改文档update
**修改器:**将数据修改为什么
$set 修改一个值
$unset 删除一个域
$rename 修改一个域的名称
$inc 对某个域的值进行加减修改
$mul 对某个域的值进行乘法修改
$min 设定最小值
$max 设定最大值
数组修改器
$push 向数组中增加一个元素
$pushAll 向数组中增加多个元素
$pull 从数组中删除一个元素
$pullAll 从数组中删除多个元素
$pop 从数组中删掉头尾两端的元素
$addToSet 向数组中添加一个元素,该元素不能和其他元素重复

八. 索引
创建索引:ensureIndex( )
功能:创建索引
参数:提供索引的类别选项
* 1 表示为该域创建正向索引,-1 表示逆向索引
删除索引
db.collection_name.dropIndex( )
功能:删除一个索引
参数:索引的名称
索引类型
数组索引:如果对某个数组域创建索引,则对数中的每个值均创建了索引。通过数组中单个值查询也会提高效率
子文档索引:某个域值为文档,对其子文档创建索引,则加快通过子文档进行查找的查找速度
唯一索引:唯一索引创建时希望创建索引的域有不同的值,也可以通过这种方法来限制域的值。
覆盖索引:查找时,只获取索引项的内容,而不去连接其他文档内容。这样从索引表就可以得到查询结果,提高查询效率。
稀疏索引(间隙索引):只针对有指定域的文档创建索引表,没有该域的文档不插入到索引表中
文本索引:使用文本索引可以快速的进行文本检索,这在较长的字符串搜索比较有用

九.固定集合
定义:mongodb中可以创建大小固定的集合,称之为固定集合。固定集合性能出色且适用于很多场景。
比如:日志处理,临时缓存。
特点:插入数据快
顺序查询速度快
能够淘汰早期的数据

十 聚合(查找的升级版本)
对数据文档进行整理统计
db.collection_name.aggregate( )
功能:聚合函数,配合聚合条件进行数据整理
聚合操作符
$group : 分组 按照什么分组由具体的分组操作符而定
$sum 求和
$avg 求平均数
$min 求最小值
$max 求最大值
$first 求第一个文档值指定值
$last 求最后一个文档指定值
$project 用于修饰文档的显示结构
$match 过滤数据
$limit 显示前几条数据
$skip 跳过几条数据
$sort 排序
聚合管道
前一个聚合操作的结果给后一个聚合操作执行
格式:将多个聚合操作放到一个 [ ]中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值