mongoDB系列之(一):10分钟玩转mongoDB
1. mongoDB是什麽
mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式。
存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary JSON)。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。
2. 安装mongoDB
MongoDB安装很简单,基本无需安装,安装包解压后即可使用。
2.1 用tar包安装
2.1.1 从官网下载最新版本mongoDB的tar包,解压
- # curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.7.tgz
- # tar -zxvf mongodb-linux-x86_64-3.0.7.tgz
- # mkdir -p mongodb
- # cp -R -n mongodb-linux-x86_64-3.0.7/ mongodb
2.1.2 创建数据目录
- # mkdir -p /data/mongodb
2.1.3 启动mongoDB,有两种方法:
命令行指定数据目录启动
- # mongod --dbpath /data/mongodb --logpath /var/log/mongodb.log
指定配置文件启动
- # mongod -f /etc/mongod_27019.conf
2.1.4 停止mongoDB
- # mongod -f /etc/mongod_27019.conf --shutdown
2.2 用yum安装
本文例子是在Cent OS 7上进行安装,mongoDB版本是3.0
2.2.1 添加yum源
- # vi /etc/yum.repos.d/mongodb-org-3.0.repo
- [mongodb-org-3.0]
- name=MongoDB Repository
- baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
- gpgcheck=0
- enabled=1
2.2.2 安装mongoDB
- # yum install -y mongodb-org
2.2.3 启动mongoDB
- # systemctl start mongod
设定文件位置:/etc/mongod.conf
数据库路径:/var/lib/mongo
2.2.4 问题点
- WARNING: Readahead for /var/lib/mongo is set to 4096KB
1. 日志里出现上面的信息,需要调整Readahead的大小
- # blockdev --report
- # blockdev --setra 256 /dev/sda
- # blockdev --setra 256 /dev/dm-1
2. 日志里出现下面信息,需要修改内核参数
- WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
关闭透明大页
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
- echo never > /sys/kernel/mm/transparent_hugepage/defrag
3. Cent OS 7上需要把mongoDB添加到systemd,否则会出现下面的错误
- systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
将mongoDB添加到systemd
- # vi /usr/lib/systemd/system/mongod.service
- [Unit]
- Description=mongodb database
- [Service]
- User=mongod
- Group=mongod
- Environment="OPTIONS=--quiet -f /etc/mongod.conf"
- ExecStart=/usr/bin/mongod $OPTIONS run
- PIDFile=/var/run/mongodb/mongod.pid
- [Install]
- WantedBy=multi-user.target
建立链接
- # ln -s /usr/lib/systemd/system/mongod.service /etc/systemd/system/multi-user.target.wants/
重新加载systemctl
- # systemctl daemon-reload
2.3 设定文件说明
设定文件 /etc/mongod.conf
- processManagement:
- fork: true
- net:
- bindIp: 127.0.0.1
- port: 27017
- storage:
- dbPath: /srv/mongodb
- systemLog:
- destination: file
- path: "/var/log/mongodb/mongod.log"
- logAppend: true
- storage:
- journal:
- enabled: true
processManagement.fork: true 以daemon模式启动mongod
net.bindIp: 指定IP,逗号分隔,注释掉的情况下,服务启动在0.0.0.0
systemLog.quiet: true 日志输出使用quiet模式,只输出critical
storage.dbPath: 指定数据的存放位置
replication.replSetName: 副本集的名字
security.authorization: enabled 使用认证
security.keyFile: 使用keyFile
verbosity: 日志开启debug模式,0-5
operationProfiling.slowOpThresholdMs: slowlog设定,默认100
net.http.RESTInterfaceEnabled: rest接口是否有效
net.maxIncomingConnections: 最大连接数,默认65536,不能超过系统设置,# ulimit -n
3. 使用mongoDB
下面列出一些使用mongoDB的常用命令,其他还有很多,详细参照官方文档
3.1 连接mongoDB
- # mongo
3.2 查看数据库
- > show dbs
3.2 切换数据库,没有的时候创建
- > use new2
3.3 查看collection
- > show collections
- > show tables
3.4 查看当前数据库状态
- > db.stats()
3.5 插入数据
- > db.user.insert({"username":"test1","age":12,"sex":"m"})
3.6 查找数据
查找集合中所有数据
- > db.user.find()
指定条件查找数据
- > db.user.find({age: {$gt: 10}});
- > db.user.find({sex: /m/});
3.7 统计数据
- > db.user.count()
指定条件统计数据
- > db.user.count({sex: "m"});
3.8 删除记录
- > db.user.remove({age: 12});
3.9 删除collection
- > db.user.drop()
3.10 复制数据库
- > db.copyDatabase("new2", "new3", "127.0.0.1");
3.11 删除当前数据库
- > db.dropDatabase();
3.12 释放空间
- > db.repairDatabase()
3.13 停止mongodb
- > use admin
- > db.shutdownServer()
3.14 帮助文件
- > help
- > db.help()
4. mongoDB状态页面
4.1 打开自带的状态页
- # vi /etc/mongod.conf
- net:
- port: 27017
- http:
- enabled: true
4.2 浏览器访问
http://IP:28017/
5. 后记
本文只是初步学习一下mongoDB的安装和使用,副本集,分片等功能,接下来会进行介绍。
mongoDB系列之(一):10分钟玩转mongoDB的更多相关文章
- Docker系列之(一):10分钟玩转Docker(转)
1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是 ...
- Redis系列之(一):10分钟玩转Redis(转)
1. Redis介绍 Redis是一个开源的使用ANSI C语言编写.基于内存的Key-Value数据库. 它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集 ...
- Docker系列之(一):10分钟玩转Docker
1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是 ...
- Redis系列之(一):10分钟玩转Redis
1. Redis介绍 Redis是一个开源的使用ANSI C语言编写.基于内存的Key-Value数据库. 它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集 ...
- 干货 | 10分钟玩转PWA
关于PWA PWA(Progressive Web App), 即渐进式web应用.PWA本质上是web应用,目的是通过多项新技术,在安全.性能.体验等方面给用户原生应用的体验.而且无需像原生应用那样 ...
- Docker学习总结(10)——10分钟玩转Docker
1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是 ...
- 【Mockplus视频教程】《10分钟玩转Mockplus》
地址:http://doc.mockplus.cn/?p=152
- MongoDB系列一(索引及C#如何操作MongoDB)
索引总概况 db.test.ensureIndex({"username":1})//创建索引 db.test.ensureIndex({"username": ...
- mongoDB系列之(二):mongoDB 副本集
1. 什么是副本集 副本集就是mongoDB副本所组成的一个集群. 同期原理是,写操作发生在主库,从库同步主库的OpLog日志. 集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一 ...
随机推荐
- Linux内核中的常用宏container_of其实很简单【转】
转自:http://blog.csdn.net/npy_lp/article/details/7010752 开发平台:Ubuntu11.04 编 译器:gcc version 4.5.2 (Ubun ...
- 56.Merge Intervals---贪心---《编程之美》2.19区间重合判断
题目链接:https://leetcode.com/problems/merge-intervals/description/ 题目大意:给出一串list,里面装interval类,这个类里有star ...
- 无状态Http
无状态的根本原因 浏览器和服务器使用socket通信,服务器将请求结果返回给浏览器后,会关闭当前socket连接.而且服务器会在处理页面完毕后销毁页面对象. 应用层面的原因 浏览器和服务器之间通信都遵 ...
- centos7下vi的用法
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...
- JDK动态代理小例子
一个小汽车,有一个跑run()的方法,我们想使用jdk动态代理使小汽车执行run之前 加点油,run之后洗车. 有四个类,接口Car(小汽车)Kayan(具体实现类(卡宴)) CarProxy(汽车的 ...
- Linux 用户篇——用户管理的配置文件
一.用户管理之配置文件的重要性 在Linux系统中,用户账户的相关信息是存放在相关配置文件中.而Linux安全系统的核心是用户账号,用户对系统中各种对象的访问权限取决于他们登录系统时用的账户,并且Li ...
- 如何使用OpenSSL工具生成根证书与应用证书
如何使用OpenSSL工具生成根证书与应用证书 一.步骤简记 // 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认) openssl req -new -x509 -d ...
- Jenkins+Ant+SVN+Jmeter实现持续集成
一.什么是持续集成? 待补充 二.说明: 本次框架介绍中不涉及到介绍框架的构建过程,介绍如何构建环境详细的构建见前篇文章: jmeter+Jenkins持续集成(邮件通知) Jmeter+Jenki ...
- vue引入自己写的js文件
话不多说,直接上代码呀~ 先来个结构图: 中规中矩的vue-cli就写了一个自己的js文件 那么我想要引入到vue组件里. 1.首先写我的js文件 2.引入到vue组件!!!一定要用{}把方法名拿过来 ...
- PHP之数组(遍历顺序)
作者: Laruence( ) 本文地址: http://www.laruence.com/2009/08/23/1065.html PHP的数组, 如果用foreach来访问, 遍历的顺序是固定 ...