入门"/>
centos7 mongodb 入门
mongodb 入门
简介
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
安装
阿里云镜像
根据网页中配置方法, vim /etc/yum.repos.d/mongodb-org.repo
并将配置粘贴进去,修改版本为最新的 4.2
[mongodb-org]
name = MongoDB Repository
baseurl = /$releasever/mongod
b-org/4.2/x86_64/
gpgcheck = 1
enabled = 1
gpgkey = .2.asc
运行 yum search mongodb
可以看到相关的包。
运行 yum install -y mongodb-org
开始安装 mongodb。可以看到自动帮我们找到需要安装的依赖包,这也是用 yum 安装而不用 rpm 的原因。
配置
/etc/mongod.conf
systemLog: # 日志配置destination: file # 文件形式logAppend: true # 日志追加path: /var/log/mongodb/mongod.log # 日志文件路径storage: # 存储配置dbPath: /var/lib/mongo # 数据存储路径# 是否开启 journal 日志持久存储,journal 日志用来数据恢复,是 mongod 最基础的特性,通常用于故障恢复。64 位系统默认为 true,32 位默认为 false,建议开启,仅对 mongod 进程有效。journal:enabled: trueprocessManagement: # 进程管理fork: true # 运行在后台pidFilePath: /var/run/mongodb/mongod.pid # PID 文件路径timeZoneInfo: /usr/share/zoneinfonet: # 网络配置port: 27017 # 默认端口bindIp: 127.0.0.1 # 绑定ip, 多个用逗号分隔security: # disabled 或者 enabled,仅对 mongod 有效;表示是否开启用户访问控制(Access Control),即客户端可以通过用户名和密码认证的方式访问系统的数据,默认为 “disabled”,即客户端不需要密码即可访问数据库数据。(限定客户端与 mongod、mongos 的认证)authorization: enabled
启动
service mongod start
# 检查一下是否有 mongod 的进程
ps -ef | grep mongod
# 打印出来的信息,可以看到它是以 mongod 的身份运行的
基础概念
- 文档:数据的基本单元,相当于关系型数据库中的行
- 由键值对组成的有序集
- 不仅区分大小写,还区分数据类型
- 集合:多个文档组成集合,文档可以是不同的结构,相当于关系型数据库中的表
- 不能以system开头,且不能使用保留字符
- 动态模式可以使一个集合中包含多样化文档对象
- 数据库:多个集合聚合组成数据库
- 数据库名称区分大小写
- 几个特殊意义的数据库:admin(用户数据)、local(本地数据)、config(配置数据)
MongoDB连接
// 标准URI连接语法
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
- mongodb:// uri协议,固定格式
- username:password@ 可选,连接数据库用户验证
- host 必须指定至少一个host,如果连接复制集,可指定多个主机地址
- port 可选,默认为27017
- /database 连接数据库名称,若不指定默认打开test数据库
- ?options 连接选项
用户管理
MongoDB数据库默认是没有用户名及密码的,即无权限访问限制。为了方便数据库的管理和安全,需创建数据库用户。
权限 | 说明 |
---|---|
read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
root | 只在admin数据库中可用。超级账号,超级权限 |
db.createUser({user: '<name>',pwd: '<cleartext password>',roles: [{role: '<role>', db: '<database>'} | '<role>',...]
});
数据库、集合操作
- use database 切换数据库,如果不存在则创建
- show dbs 查看所有数据库
- db 查看当前数据库
- db.dropDatabase() 删除当前数据库
- db.createCollection(‘collection’) 创建集合
- db.collection.renameCollection (‘x’) 重命名集合
show dbs;
use test;
db.dropDatabase();db.createCollection('haha');
db.haha.renameCollection('heihei');
db.heihei.drop();
文档操作
- db.collection.insert(document) 插入文档
- db.collection.update(query,update) 更新文档
- db.collection.deleteOne(query) 删除单个文档
- db.collection.deleteMany(query) 删除多个文档
- db.collection.find(query,projection) 查找文档
- …
$特殊符号
- $lt / $lte 小于(<) / 小于等于(<=)
- $gt / $gte 大于(>) / 大于等于(>=)
- $ne 不等于(!=)
- $or 条件查询 or
- $set update操作时set
- $unset 删除字段
- …
// 插入
db.heihei.insert({title: '夕阳山外山',description: '夕阳山外山',by: 'DonfuPanda',tags: ['mongodb', 'database', 'NoSQL'],likes: 100
})
db.heihei.find()
db.heihei.update({ title: '夕阳山外山' }, { $set: { title: 'MongoDB' } })
db.heihei.find().pretty()// 删除
db.heihei.deleteOne({ status: 'D' })
db.heihei.deleteMany({ status: 'A' })// 查询
db.heihei.find().pretty()
db.heihei.findOne().pretty()// and 查询
db.heihei.find({ by: '夕阳山外山', title: 'MongoDB' }).pretty()
// or 查询
db.heihei.find({ $or: [{ by: '夕阳山外山' }, { title: 'MongoDB' }] }).pretty()
db.heihei.find({likes: { $gt: 50 },$or: [{ by: '夕阳山外山' }, { title: 'MongoDB' }]}).pretty()// limit skip
db.heihei.find({}, { title: 1, _id: 0 }).limit(2)
db.heihei.find({}, { title: 1, _id: 0 }).limit(1).skip(1)
更多推荐
centos7 mongodb 入门
发布评论