01:MongoDB基础
1.1 MongoDB简介
1、特点
1. MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
2. 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Ning",Address="Beijing")来实现更快的排序。
3. 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
4. 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
5. Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
6. MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
7. Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
8. Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
9. Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
10. GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
11. MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
12. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
2、MongoDB简介
1. MongoDB是一个文档型的NoSQL数据库,文档型---> BSON文档(json的二进制)
2. 保存数据:key-value
3. 一般不支持事务
3、MongoDB使用场景
1)更高的写入负载
默认情况下,MongoDB更侧重高数据写入性能,而非事务安全,MongoDB很适合业务系统中有大量“低价值”数据的场景。
但是应当避免在高事务安全性的系统中使用MongoDB,除非能从架构设计上保证事务安全。
2)高可用性
MongoDB的复副集(Master-Slave)配置非常简洁方便,此外,MongoDB可以快速响应的处理单节点故障,自动、安全的完成故障转移。
这些特性使得MongoDB能在一个相对不稳定(如云主机)的环境中,保持高可用性。
3)表结构不明确,且数据在不断变大
4、MongoDB应用举例
1. 比如豆瓣影评中有1000部电影,每部电影有1000个影评,每个影评有1000个评论,那么查询笛卡尔积是1000*1000*1000
2. 而使用MongoDB只需要存储1000条数据即可完成上述数据查询
1.2 MongoDB安装与配置
1、上传解压安装MongoDB
mkdir tools # 存放安装包
mkdir training # 存放安装目录
tar -zxvf mongodb-linux-x86_64-enterprise-rhel70-3.4.10.tgz -C ~/training/
vi ~/.bash_profile
MONGODB_HOME=/root/training/mongodb-linux-x86_64-enterprise-rhel70-3.4.10 export MONGODB_HOMEPATH=$MONGODB_HOME/bin:$PATH export PATH
.bash_profile
source ~/.bash_profile # 生效环境变量, 使在任何位置都可以使用MongoDB命令
安装MongoDB依赖rpm包
yum install -y net-snmp* # 安装net-snmp :
yum install -y cyrus* # 安装cyrus :
启动MongoDB
mkdir -p /data/db
mongod --dbpath /data/db # 指定MongoDB数据库文件存储路径(从3.2版本后,MongoDB的默认的数据引擎:wiredTiger)
mongod --dbpath /data/db1 --storageEngine=mmapv1 # 早期:内存映射,可以指定参数 --storageEngine=mmapv1
使用MongoDB Web的控制台:需要在启动MongoDB的时候,指定参数: --httpinterface
mongod --dbpath /data/db1 --storageEngine=mmapv1 --httpinterface
2、测试MongoDB shell
mongo # 进入mongo shell环境
show dbs # 查看所有db
use mydemo # 使用我们的数据库(如果没有这个数据库会自动创建)
db.test1.insert({id:1,"name":"Tom"}) # 在test1表中插入一条数据(如果没有这个表会自动创建)
1.3 MongoDB的体系结构
1、一个MongoDB Server:实例和多个数据库(1:N)
2、逻辑存储结构
数据库(database)、表(集合Collection)、记录(文档Document)
3、物理存储结构
1)--dbpath /data/db 指定数据库文件存储的位置
2)MongoDB的物理存储的文件
(*)命名空间文件: 后缀: .ns 大小 16M
(*)数据文件: 后缀:0,1,2,3****
大小: 0 ---> 16M
1 ---> 32M
2 ---> 64M
(*)日志文件:存储的位置可能不一样
(1)直接存储在操作系统
系统日志文件: 记录的是系统的启动信息、告警信息等等
journal日志文件:重做日志,即:redo日志,用于恢复
(2)存储在集合中(Collection)中
oplog: 复制操作的日志(只在:主从复制的功能)
慢查询的日志(需要单独配置):一般在生产系统中:大于200毫秒的日志
注意:从3.2版本后,MongoDB的默认的数据引擎:wiredTiger
早期:内存映射,可以指定参数 --storageEngine=mmapv1
新版本:数据文件大小从:64M开始
1.4 使用mongo shell
1、启动mongo shell
mongo # 直接输入mongo即可进入mongo shell环境
mongo -u *** -p *** -host *** -port ***
参数:
--username 用户名
--password 密码
--host
--port
2、可以在mongo Shell使用外部的编辑器:vi
[root@linux-node2 db]# export EDITOR=vi # 定义环境变量 后需要重新进入mongo shell环境中
[root@linux-node2 db]# mongo
MongoDB Enterprise > function myFunction(){}
MongoDB Enterprise > edit myFunction # 修改myFunction函数
function myFunction(){print("hello word")}
MongoDB Enterprise > myFunction() # 运行myFunction() 函数
hello word
3、使用启动配置文件
vim ~/.mongorc.js
host=db.serverStatus().host;
cmdCount=1;
prompt=function(){
return db+"@"+host+" "+(cmdCount++) +">";
}
''' 此时的mongo shell就会显示 数据库名(test)主机名(linux-node2.example.com) 条数
test@linux-node2.example.com 1>
'''
4、mongo shell的基本操作
show dbs # 查看所有数据库
use mydemo1 # 使用数据库(如果没有当前数据库会自动创建)
show tables # 查看当前数据库所有表
show collections # 查看当前集合
1.5 MongoDB数据类型
注:mongo shell数据类型:字符串、整型、布尔值、浮点数、时间 ******
1、日期类型:date
使用不同方式来创建一个date
(*) Date():表示当前时间,插入的是一个字符串类型
(*) new Date():插入的是isodate类型,表示的是格林威治标准时间
(*) ISODate(): 类似new Date()
2、ObjectId:
当插入数据的时候,自动生成一个字段: _id ---> 相当于主键
ObjectId是一个12字节的BSON类型的字符串
3、表示数字的时候,注意的问题
NumberInt: 表示32位整数
NumberDecimal:支持34位小数
Double:如果没有指定数字类型默认是double
4、测试
db.test2.insertOne({ "_id" : 1, "val" : NumberDecimal( "9.99" ), "description" : "Decimal" }) db.test2.insertOne({ "_id" : 2, "val" : 9.99, "description" : "Double" }) db.test2.insertOne({ "_id" : 3, "val" : 10, "description" : "Double" }) db.test2.insertOne({ "_id" : 4, "val" : NumberLong(10), "description" : "Long" }) db.test2.insertOne({ "_id" : 5, "val" : NumberDecimal( "10.0" ), "description" : "Decimal" })
创建表中测试数据
1、查询表中所有数据
db.test2.find()
2、数字不指定数据类型时默认是double类型,所以只能查到一条
db.test2.find({"val":9.99})
{ "_id" : 2, "val" : 9.99, "description" : "Double" }
3、类型为NumberDecimal,值为9.99的数据
db.test2.find({"val":NumberDecimal("9.99")})
{ "_id" : 1, "val" : NumberDecimal("9.99"), "description" : "Decimal" }
4、对于整数10的匹配,将匹配所有的数据类型是10
db.test2.find({"val":10})
{ "_id" : 3, "val" : 10, "description" : "Double" }
{ "_id" : 4, "val" : NumberLong(10), "description" : "Long" }
{ "_id" : 5, "val" : NumberDecimal("10.0"), "description" : "Decimal" }
5、db.test2.find({"val":NumberDecimal("10")})
{ "_id" : 3, "val" : 10, "description" : "Double" }
{ "_id" : 4, "val" : NumberLong(10), "description" : "Long" }
{ "_id" : 5, "val" : NumberDecimal("10.0"), "description" : "Decimal" }
111111111111111111111
转载于:https://www.cnblogs.com/xiaonq/p/10356568.html
01:MongoDB基础相关推荐
- Mongodb 笔记01 MongoDB 简介、MongoDB基础知识、启动和停止MongoDB
MongoDB 简介 1. 易于使用:没有固定的模式,根据需要添加和删除字段更加容易 2. 易于扩展:MongoDB的设计采用横向扩展.面向文档的数据模型使它能很容易的再多台服务器之间进行分割.自动处 ...
- Mongodb基础命令与用法
Mongodb基础命令与用法 查看版本号 [root@VM_0_12_centos bin]# ./mongo -version MongoDB shell version v3.6.5 git ve ...
- MongoDB基础教程系列--目录结构
MongoDB基础教程系列--目录结构
- MongoDB 基础用法及学习笔记
MongoDB 基础用法 环境配置与安装 安装 查看MongoDB版本 启动MongoDB服务 检查服务状态 启动服务 打开配置文件,连接MongoDB 查看数据列表 退出 MongoDB 连接 Mo ...
- Maven-学习笔记01【基础-Maven基本概念】
Java后端 学习路线 笔记汇总表[黑马程序员] 黑马程序员(腾讯微云)Maven基础讲义.pdf Maven-学习笔记01[基础-Maven基本概念] Maven-学习笔记02[基础-Maven的安 ...
- JQuery-学习笔记01【基础——JQuery基础】
Java后端 学习路线 笔记汇总表[黑马程序员] JQuery-学习笔记01[基础--JQuery基础]--[day01] JQuery-学习笔记02[基础--JQuery选择器] JQuery-学习 ...
- JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】
w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...
- MongoDB 基础浅谈
作者:hazenweng,腾讯 QQ 音乐后台开发工程师 MongoDB 作为一款优秀的基于分布式文件存储的 NoSQL 数据库,在业界有着广泛的应用.下文对 MongoDB 的一些基础概念进行简单介 ...
- Jam's balance HDU - 5616 (01背包基础题)
Jim has a balance and N weights. (1≤N≤20) The balance can only tell whether things on different side ...
- MongoDB基础使用
5.MongoDB基础使用 5.1.常用的命令(重点) > Help 查看帮助 显示数据库列表 > show dbs 创建数据库 > use dbname 如果数据库不存在,则创建数 ...
最新文章
- 方法的重载与重写_java基础知识之重载和重写
- python应该怎么自学-我是一个毫无基础的菜鸟,想自学Python,该怎么入手?
- oracle安装实训心得,oracle数据库实训心得.docx
- GitLab基本设置-新增用户
- EXCEL在公司管理中的典型应用
- java memcmp_memcmp,memicmp函数
- spad 探测器_从光到光子—“单光子”探测器
- 前台等待事件 oracle,Oracle等待事件之buffer busy waits
- 关于使用pietty或putty终端连接ubuntu虚拟机时报被拒绝连接问题
- 为节省内存,动态添加view布局和控件
- 吴恩达深度学习(一)-第三周:Planar data classification with one hidden layer
- 我在CSDN上使用了大半年的账号最后不属于自己,纵有疾风起,人生不言弃
- 基于Html5的移动端APP开发框架
- 百年通信史:落后西方半世纪的中国,用20年绝地反杀!
- Vant删除图片Vue版本
- 线性代数笔记(6) 矩形的相似——标准型与约当标准型及求法
- Logistic回归与建模
- Socket英文解释
- Python核心编程-Amy老师第十讲课程作业
- 九号公司——高科技黑马的进击与困境
热门文章
- labview周立功can通讯程序.rar_使用Labview进行CAN 通讯之dbc解析
- 在jsp页面如何禁用session?_Session 的简单介绍
- Spring学习手册 1:Spring MVC 返回JSON数据
- 留言板小程序开发笔记3
- 第八章:软件包的安装与管理
- WAS6.1在JDK1.5环境下JSP无法编译问题
- MyEclipse的快捷使用(含关联源码和Doc的方式)
- iOS.ObjC.Basic-Knowledge
- AgileEAS.NET平台-文档发布-还等什么?
- OD反汇编EXE添加一个启动时的消息框