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 = https://mirrors.aliyun.com/mongodb/yum/redhat/$releasever/mongod
b-org/4.2/x86_64/
gpgcheck = 1 
enabled = 1 
gpgkey = https://www.mongodb.org/static/pgp/server-4.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: true
    
processManagement:  # 进程管理
  fork: true # 运行在后台
  pidFilePath: /var/run/mongodb/mongod.pid # PID 文件路径
  timeZoneInfo: /usr/share/zoneinfo

net: # 网络配置
  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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值