目录
简介
官网地址:MongoDB | Build Faster. Build Smarter. | MongoDB
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
Mongodb与关系型数据库比较
关系型数据库概念 | Mongodb概念 | 说明 |
database | database | 数据库 |
table | collection | 数据库表(关系型数据库) 集合(Mongodb) |
column | field | 字段(关系型数据库) 域(Mongodb) |
index | index | 索引 |
table joins | 表连接,Mongodb不支持 | |
primary key | primary key | 主键 Mongodb自动将_id设置为主键 |
单机版本-安装
- Centos7 安装 Mongodb 5.0.6
下载地址:MongoDB Community Download | MongoDB - 安装步骤
#进入到安装目录 cd /home/dym/mongodb #下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.6.tgz #解压 tar -zxvf mongodb-linux-x86_64-rhel70-5.0.6.tgz #重命名解压目录名称并进入到解压后的目录 mv mongodb-linux-x86_64-rhel70-5.0.6 cd mongodb-5.0.6 #设置环境变量 vi /etc/profile #变量内容如下: export MONGODB_HOME=/home/dym/mongodb/mongodb-5.0.6 export PATH=PATH:{MONGODB_HOME}/bin #环境变量生效 source /etc/profile #建立日志和数据文件夹 mkdir logs data #设置配置文件 cd /home/dym/mongodb/mongodb-5.0.6/bin vi mongodb.conf #内容如下: port=27017 #端口 bind_ip=0.0.0.0 #默认是127.0.0.1 dbpath=/home/dym/mongodb/mongodb-5.0.6/data #数据库存放 logpath=/home/dym/mongodb/mongodb-5.0.6/logs/mongodb.log #日志文件 fork=true #设置后台运行 #auth=true #开启认证 #启动mongodb mongod --config mongodb.conf
- 连接客户端,验证启动是否成功
admin:集合名称,root是用户名mongo 192.168.160.110:27017/admin -u root
至此mongodb安装完成
集群副本模式-安装
参考文章:生产环境部署MongoDB副本集(带keyfile安全认证以及用户权限)
连接并使用mongo
- 连接到数据库
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
-
创建数据库
use DATABASE_NAME
如果数据库不存在,则创建数据库,否则切换到指定数据库。
列举所有的数据: show dbs -
查看数据库列表
show dbs
-
创建集合
db.createCollection(name, options)
name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项
查看所有集合:show collections删除集合:db.mycol2.drop();
-
设置索引
db.user.createIndex({"name":1})
-
查看索引
db.user.getIndexes()
增删改查
- 插入数据
db.COLLECTION_NAME.insert(document) db.COLLECTION_NAME.save(document)
save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
db.user.insert({"name":"zhangdan","age": NumberInt(18)}) - 修改数据
db.user.update({'name':'zhangsan'},{$set:{'age': NumberInt(10)}},{multi:true})
如果你要修改多条相同的文档,则需要设置 multi 参数为 true
- 删除数据
db.collection.remove({})
{}删除条件
- 查询数据
db.user.aggregate([{$match: {id: "001"}}, {$count: 'num'}]) db.user.find({})
mongo用户权限设置
查看用户:
db.system.users.find().pretty();
添加用户:
db.createUser({user: 'admin', pwd: '123456', roles: ['root']})
说明:
roles:是权限主要有以下权限
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限