前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

mongoDB

作者头像
landv
发布2019-12-24 11:46:30
9470
发布2019-12-24 11:46:30
举报
文章被收录于专栏:landv

1. mongoDB是什麽

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

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

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

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

2. 安装mongoDB

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

2.1 用tar包安装

2.1.1 从官网下载最新版本mongoDB的tar包,解压
代码语言:javascript
复制
# 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 创建数据目录
代码语言:javascript
复制
# mkdir -p /data/mongodb
2.1.3 启动mongoDB,有两种方法:

命令行指定数据目录启动

代码语言:javascript
复制
# mongod --dbpath /data/mongodb --logpath /var/log/mongodb.log

指定配置文件启动

代码语言:javascript
复制
# mongod -f /etc/mongod_27019.conf
2.1.4 停止mongoDB
代码语言:javascript
复制
# mongod -f /etc/mongod_27019.conf --shutdown

2.2 用yum安装

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

2.2.1 添加yum源
代码语言:javascript
复制
# 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
代码语言:javascript
复制
# yum install -y mongodb-org
2.2.3 启动mongoDB
代码语言:javascript
复制
# systemctl start mongod

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

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

2.2.4 问题点
代码语言:javascript
复制
WARNING: Readahead for /var/lib/mongo is set to 4096KB

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

代码语言:javascript
复制
# blockdev --report
# blockdev --setra 256 /dev/sda
# blockdev --setra 256 /dev/dm-1

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

代码语言:javascript
复制
WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

关闭透明大页

代码语言:javascript
复制
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

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

代码语言:javascript
复制
systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..

将mongoDB添加到systemd

代码语言:javascript
复制
# 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

建立链接

代码语言:javascript
复制
# ln -s /usr/lib/systemd/system/mongod.service /etc/systemd/system/multi-user.target.wants/

重新加载systemctl

代码语言:javascript
复制
# systemctl daemon-reload

2.3 设定文件说明

设定文件 /etc/mongod.conf

代码语言:javascript
复制
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

代码语言:javascript
复制
# mongo

 3.2 查看数据库

代码语言:javascript
复制
> show dbs

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

代码语言:javascript
复制
> use new2

3.3 查看collection

代码语言:javascript
复制
> show collections
> show tables

3.4 查看当前数据库状态

代码语言:javascript
复制
> db.stats()

3.5 插入数据

代码语言:javascript
复制
> db.user.insert({"username":"test1","age":12,"sex":"m"})

3.6 查找数据

查找集合中所有数据

代码语言:javascript
复制
> db.user.find()

指定条件查找数据

代码语言:javascript
复制
> db.user.find({age: {$gt: 10}});
> db.user.find({sex: /m/});

3.7 统计数据

代码语言:javascript
复制
> db.user.count()

指定条件统计数据

代码语言:javascript
复制
> db.user.count({sex: "m"});

3.8 删除记录

代码语言:javascript
复制
> db.user.remove({age: 12});

3.9 删除collection

代码语言:javascript
复制
> db.user.drop()

3.10 复制数据库

代码语言:javascript
复制
> db.copyDatabase("new2", "new3", "127.0.0.1");

3.11 删除当前数据库

代码语言:javascript
复制
> db.dropDatabase();

3.12 释放空间

代码语言:javascript
复制
> db.repairDatabase()

3.13 停止mongodb

代码语言:javascript
复制
> use admin
> db.shutdownServer()

3.14 帮助文件

代码语言:javascript
复制
> help
> db.help()

4. mongoDB状态页面

4.1 打开自带的状态页

代码语言:javascript
复制
# vi /etc/mongod.conf
net:
  port: 27017
  http:
    enabled: true

4.2 浏览器访问

http://IP:28017/

5. 后记

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. mongoDB是什麽
  • 2. 安装mongoDB
    • 2.1 用tar包安装
      • 2.2 用yum安装
        • 2.3 设定文件说明
        • 3. 使用mongoDB
          • 3.1 连接mongoDB
            •  3.2 查看数据库
              • 3.2 切换数据库,没有的时候创建
                • 3.3 查看collection
                  • 3.4 查看当前数据库状态
                    • 3.5 插入数据
                      • 3.6 查找数据
                        • 3.7 统计数据
                          • 3.8 删除记录
                            • 3.9 删除collection
                              • 3.10 复制数据库
                                • 3.11 删除当前数据库
                                  • 3.12 释放空间
                                    • 3.13 停止mongodb
                                      • 3.14 帮助文件
                                      • 4. mongoDB状态页面
                                        • 4.1 打开自带的状态页
                                          • 4.2 浏览器访问
                                          • 5. 后记
                                          相关产品与服务
                                          云数据库 MongoDB
                                          腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档