1. mongoDB是什麽

mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式。

存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary JSON)。

模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。

mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。

2. 安装mongoDB

MongoDB安装很简单,基本无需安装,安装包解压后即可使用。

2.1 用tar包安装

2.1.1 从官网下载最新版本mongoDB的tar包,解压

  1. # curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.7.tgz
  2. # tar -zxvf mongodb-linux-x86_64-3.0.7.tgz
  3. # mkdir -p mongodb
  4. # cp -R -n mongodb-linux-x86_64-3.0.7/ mongodb

2.1.2 创建数据目录

  1. # mkdir -p /data/mongodb

2.1.3 启动mongoDB,有两种方法:

命令行指定数据目录启动

  1. # mongod --dbpath /data/mongodb --logpath /var/log/mongodb.log

指定配置文件启动

  1. # mongod -f /etc/mongod_27019.conf

2.1.4 停止mongoDB

  1. # mongod -f /etc/mongod_27019.conf --shutdown

2.2 用yum安装

本文例子是在Cent OS 7上进行安装,mongoDB版本是3.0

2.2.1 添加yum源

  1. # vi /etc/yum.repos.d/mongodb-org-3.0.repo
  2. [mongodb-org-3.0]
  3. name=MongoDB Repository
  4. baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
  5. gpgcheck=0
  6. enabled=1

2.2.2 安装mongoDB

  1. # yum install -y mongodb-org

2.2.3 启动mongoDB

  1. # systemctl start mongod

设定文件位置:/etc/mongod.conf

数据库路径:/var/lib/mongo

2.2.4 问题点

  1. WARNING: Readahead for /var/lib/mongo is set to 4096KB

1. 日志里出现上面的信息,需要调整Readahead的大小

  1. # blockdev --report
  2. # blockdev --setra 256 /dev/sda
  3. # blockdev --setra 256 /dev/dm-1

2. 日志里出现下面信息,需要修改内核参数

  1. WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

关闭透明大页

  1. echo never > /sys/kernel/mm/transparent_hugepage/enabled
  2. echo never > /sys/kernel/mm/transparent_hugepage/defrag

3. Cent OS 7上需要把mongoDB添加到systemd,否则会出现下面的错误

  1. systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..

将mongoDB添加到systemd

  1. # vi /usr/lib/systemd/system/mongod.service
  2. [Unit]
  3. Description=mongodb database
  4.  
  5. [Service]
  6. User=mongod
  7. Group=mongod
  8. Environment="OPTIONS=--quiet -f /etc/mongod.conf"
  9. ExecStart=/usr/bin/mongod $OPTIONS run
  10. PIDFile=/var/run/mongodb/mongod.pid
  11.  
  12. [Install]
  13. WantedBy=multi-user.target

建立链接

  1. # ln -s /usr/lib/systemd/system/mongod.service /etc/systemd/system/multi-user.target.wants/

重新加载systemctl

  1. # systemctl daemon-reload

2.3 设定文件说明

设定文件 /etc/mongod.conf

  1. processManagement:
  2. fork: true
  3.  
  4. net:
  5. bindIp: 127.0.0.1
  6. port: 27017
  7.  
  8. storage:
  9. dbPath: /srv/mongodb
  10.  
  11. systemLog:
  12. destination: file
  13. path: "/var/log/mongodb/mongod.log"
  14. logAppend: true
  15.  
  16. storage:
  17. journal:
  18. 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

  1. # mongo

3.2 查看数据库

  1. > show dbs

3.2 切换数据库,没有的时候创建

  1. > use new2

3.3 查看collection

  1. > show collections
  2. > show tables

3.4 查看当前数据库状态

  1. > db.stats()

3.5 插入数据

  1. > db.user.insert({"username":"test1","age":12,"sex":"m"})

3.6 查找数据

查找集合中所有数据

  1. > db.user.find()

指定条件查找数据

  1. > db.user.find({age: {$gt: 10}});
  2. > db.user.find({sex: /m/});

3.7 统计数据

  1. > db.user.count()

指定条件统计数据

  1. > db.user.count({sex: "m"});

3.8 删除记录

  1. > db.user.remove({age: 12});

3.9 删除collection

  1. > db.user.drop()

3.10 复制数据库

  1. > db.copyDatabase("new2", "new3", "127.0.0.1");

3.11 删除当前数据库

  1. > db.dropDatabase();

3.12 释放空间

  1. > db.repairDatabase()

3.13 停止mongodb

  1. > use admin
  2. > db.shutdownServer()

3.14 帮助文件

  1. > help
  2. > db.help()

4. mongoDB状态页面

4.1 打开自带的状态页

  1. # vi /etc/mongod.conf
  2. net:
  3. port: 27017
  4. http:
  5. enabled: true

4.2 浏览器访问

http://IP:28017/

5. 后记

本文只是初步学习一下mongoDB的安装和使用,副本集,分片等功能,接下来会进行介绍。

mongoDB系列之(一):10分钟玩转mongoDB的更多相关文章

  1. Docker系列之(一):10分钟玩转Docker(转)

    1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是 ...

  2. Redis系列之(一):10分钟玩转Redis(转)

    1. Redis介绍 Redis是一个开源的使用ANSI C语言编写.基于内存的Key-Value数据库. 它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集 ...

  3. Docker系列之(一):10分钟玩转Docker

    1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是 ...

  4. Redis系列之(一):10分钟玩转Redis

    1. Redis介绍 Redis是一个开源的使用ANSI C语言编写.基于内存的Key-Value数据库. 它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集 ...

  5. 干货 | 10分钟玩转PWA

    关于PWA PWA(Progressive Web App), 即渐进式web应用.PWA本质上是web应用,目的是通过多项新技术,在安全.性能.体验等方面给用户原生应用的体验.而且无需像原生应用那样 ...

  6. Docker学习总结(10)——10分钟玩转Docker

    1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是 ...

  7. 【Mockplus视频教程】《10分钟玩转Mockplus》

    地址:http://doc.mockplus.cn/?p=152

  8. MongoDB系列一(索引及C#如何操作MongoDB)

    索引总概况 db.test.ensureIndex({"username":1})//创建索引 db.test.ensureIndex({"username": ...

  9. mongoDB系列之(二):mongoDB 副本集

    1. 什么是副本集 副本集就是mongoDB副本所组成的一个集群. 同期原理是,写操作发生在主库,从库同步主库的OpLog日志. 集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一 ...

随机推荐

  1. Linux内核中的常用宏container_of其实很简单【转】

    转自:http://blog.csdn.net/npy_lp/article/details/7010752 开发平台:Ubuntu11.04 编 译器:gcc version 4.5.2 (Ubun ...

  2. 56.Merge Intervals---贪心---《编程之美》2.19区间重合判断

    题目链接:https://leetcode.com/problems/merge-intervals/description/ 题目大意:给出一串list,里面装interval类,这个类里有star ...

  3. 无状态Http

    无状态的根本原因 浏览器和服务器使用socket通信,服务器将请求结果返回给浏览器后,会关闭当前socket连接.而且服务器会在处理页面完毕后销毁页面对象. 应用层面的原因 浏览器和服务器之间通信都遵 ...

  4. centos7下vi的用法

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  5. JDK动态代理小例子

    一个小汽车,有一个跑run()的方法,我们想使用jdk动态代理使小汽车执行run之前 加点油,run之后洗车. 有四个类,接口Car(小汽车)Kayan(具体实现类(卡宴)) CarProxy(汽车的 ...

  6. Linux 用户篇——用户管理的配置文件

    一.用户管理之配置文件的重要性 在Linux系统中,用户账户的相关信息是存放在相关配置文件中.而Linux安全系统的核心是用户账号,用户对系统中各种对象的访问权限取决于他们登录系统时用的账户,并且Li ...

  7. 如何使用OpenSSL工具生成根证书与应用证书

    如何使用OpenSSL工具生成根证书与应用证书 一.步骤简记 // 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认) openssl req -new -x509 -d ...

  8. Jenkins+Ant+SVN+Jmeter实现持续集成

     一.什么是持续集成? 待补充 二.说明: 本次框架介绍中不涉及到介绍框架的构建过程,介绍如何构建环境详细的构建见前篇文章: jmeter+Jenkins持续集成(邮件通知) Jmeter+Jenki ...

  9. vue引入自己写的js文件

    话不多说,直接上代码呀~ 先来个结构图: 中规中矩的vue-cli就写了一个自己的js文件 那么我想要引入到vue组件里. 1.首先写我的js文件 2.引入到vue组件!!!一定要用{}把方法名拿过来 ...

  10. PHP之数组(遍历顺序)

    作者: Laruence(   ) 本文地址: http://www.laruence.com/2009/08/23/1065.html PHP的数组, 如果用foreach来访问, 遍历的顺序是固定 ...