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了,会再选举出一 ...
随机推荐
- 17 - 路径操作-shutil模块
目录 1 路径操作 1.1 os.path模块 1.2 pathlib模块 1.2.1 目录操作 1.2.2 文件操作 1.3 os 模块 2 shutil模块 2.1 copy复制 2.2 rm删除 ...
- netif_receive_skb->__netif_receive_skb_core
在设备驱动收包之后,会通过netif_receive_skb将收取的包,按照注册的协议回调,传递到上层进行处理: /* 将skb传递到上层 */ static int __netif_receive_ ...
- 在Linux 系统上运行多个tomcat
--原来的不动,添加环境变量(.bash_profile)export JAVA_HOME=/home/public/jdk1.8.0_131export JRE_HOME=$JAVA_HOME/jr ...
- 在ubuntu 上安装pycharm
1.首先在官网下载pycharm并进行提取,将提取的文件夹放在/usr下面(或者任意位置) 2.然后vi /etc/hosts 编辑 将0.0.0.0 account.jetbrains.com添加到 ...
- nginx解析带中文的url重定向之后404问题
首先,有这样一个需求:一个系统的图片存储是放在upyun上的,现在有个客户需要本地化部署,所以需要将图片进行本地存储.为了兼容,图片存储的路径格式保持和在upyun上的存储路径一致.在upyun上的存 ...
- 【转载】移动开发中的上下左右滑动插件jquery.swipe.js
原文地址http://blog.csdn.net/pvfhv/article/details/3449803/# 源码: (function($) { var old = $.fn.swipe; $. ...
- ios app应用在显示屏幕上改中文名
1.点击项目名 2.选Build settings 搜索 product name 3.双击,改为需要在手机上显示的应用名
- Python+Selenium 自动化实现实例-获取测试对象的Css属性
#coding:utf-8 '''获取测试对象的css属性场景 当你的测试用例纠结细枝末节的时候,你就需要通过判断元素的css属性来验证你的操作是否达到了预期的效果.比如你可以通过判断页面上的标题字号 ...
- #ifndef的用法
作用:防止头文件的重复包含和编译 定义 #ifndef x #define x ... #endif 这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说 ...
- 用JDK自带的监控工具jconsole来监控程序运行
工具目录:C:\Program Files\Java\jdk1.6.0_06\bin\jconsole.exe 效果如下:监控类ThreadPoolExecutorTest 的运行 选择我们运行的程序 ...