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的更多相关文章

  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. flask插件系列之flask_session会话机制

    flask_session是flask框架实现session功能的一个插件,用来替代flask自带的session实现机制. 配置参数详解 SESSION_COOKIE_NAME 设置返回给客户端的c ...

  2. [Leetcode] Sum 系列

    Sum 系列题解 Two Sum题解 题目来源:https://leetcode.com/problems/two-sum/description/ Description Given an arra ...

  3. linux自动创建dev node

    通过驱动模块的加载在/dev下创建设备文件,在驱动模块卸载时又自动的删除在/dev下创建的设备文件非常方便.而这个过程就是通过device_create()和device_destroy()内核函数完 ...

  4. 基于scrapy的分布式爬虫抓取新浪微博个人信息和微博内容存入MySQL

    为了学习机器学习深度学习和文本挖掘方面的知识,需要获取一定的数据,新浪微博的大量数据可以作为此次研究历程的对象 一.环境准备   python 2.7  scrapy框架的部署(可以查看上一篇博客的简 ...

  5. groovy的三个强劲属性(一)Gpath

            我们先从GPath开始,一个GPath是groovy代码的一个强劲对象导航的结构,名称的选择与XPath相似,XPath是一个用来描述XML(和等价物)文档的标准,正如XPath,GP ...

  6. linux自动获得mac地址,修改网络配置

    1.修改网络配置,自动获得mac地址 删除 /etc/udev/rules.d/70-persistent-net.rules 文件 删除 /etc/sysconfig/network-scripts ...

  7. java基础4 函数

    本文知识点(目录): 1.函数的概述    2.函数的格式    3.自定义函数    4.函数的特点    5.函数的应用    6.函数的重载 1.函数的概述 发现不断进行加法运算,为了提高代码的 ...

  8. 修改 jupyter notebook 启动工作路径的方法

    Windows下jupyter notebook默认的启动路径就是当前cmd启动jupyter 的路径: C:\Users\用户名>jupyter notebook 此时jupyter 的启动工 ...

  9. 如何设计一个基于Node.js和Express的网站架构?

    前言 今年七月份,我和几个小伙伴们合伙建立了一个开发团队.业务开展如火如荼的同时,团队宣传就提上了日程,所以迫切需要搭建公司网站出来.确定目标后我们就开始考虑如果构建一个企业网站.先是进行业内调查,看 ...

  10. java EE : http 协议响应头部信息验证

    一  location :*****   302   重定向  private void doWork(HttpServletRequest req, HttpServletResponse resp ...