# 此处我将mongodb安装在/home/mongotest下
cd /home/
mkdir mongotest
cd mongotest/
# 创建docker-compose.yml文件
vi docker-compose.yml
# 进入编辑状态
i
# 粘贴以下内容
version: '3.1'
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root # 这里设置管理员账户为root
MONGO_INITDB_ROOT_PASSWORD: example # 密码example
ports:
- 27017:27017
# mongo数据持久化
volumes:
- /home/mongotest:/data/db
# 退出编辑状态
esc
# 保存
:wq
# 运行
docker-compose up -d
# 防火墙放行端口27017
# 查看firewalld状态,若为dead状态,则需要开启防火墙systemctl start firewalld
systemctl status firewalld
# 让防火墙永久放行27017端口
firewall-cmd --add-port=27017/tcp --permanent
# 重启防火墙
firewall-cmd --reload
cd mongotest/
# 连接数据库
# 注意:mongo5.0以下的版本使用mongo来替换mongosh,即docker exec -it mongotest_mongo_1 mongo
docker exec -it mongotest_mongo_1 mongosh
# 切换到管理员用户
use admin
db.auth('root','example') # 管理员授权登录
# 创建一个数据库testdb
use testdb
# 创建一个用户,用户名为test,密码123456。
db.createUser({user:'test',pwd:'123456',roles:[{role:'dbOwner',db:'testdb'}]})
# 测试下上面添加的用户是否可以登录数据库testdb
use testdb
db.auth('test','123456')
# 测试插入数据
db.users.insertOne({'name':'sue',age:30,email:'[email protected]'})
show collections
db.users.find({})
db.users.insertOne({name:'soft',age:20})
db.users.find({})
# 测试更新
db.users.updateOne({name:'sue'},{$set:{email:'[email protected]'}})
db.users.find({})
# 测试删除
db.users.deleteOne({'name':'sue'})
db.users.find({})
注:连接之前,确保云服务器 端口27017已放行,详见《云服务设置端口放行》
备份方式:docker cp + mongodump
恢复方式:docker cp + mongorestore
# mongotest_mongo_1 容器
# mongodump 指令
# -h 连接的mongodb的host
# -u 用户
# -p 密码
# -d 指定备份哪个数据库,不接的话代表备份所有数据库
# -o 指定备份到哪个目录
# 1.备份
docker exec -it mongotest_mongo_1 mongodump -h localhost -u root -p example -o /tmp/test
cd /tmp/
docker cp e401dcb60416:/tmp/test /tmp/test
# 2.恢复
docker exec -it mongotest_mongo_1 mongorestore -h localhost -u root -p example --dir /tmp/test
分类 | Oralce/Mysql | MongoDB | Mongoose |
---|---|---|---|
1 | 数据库实例 | MongoDB实例 | Mongoose |
2 | 模式(schema) | 数据库(database) | mongoose |
3 | 表(table) | 集合(collection) | 模板(Schema) 模型(Model) |
4 | 行(row) | 文档(document) | 实例(instance) |
5 | Prinary key | Object(_id) | Object(_id) |
6 | 表字段Column | Field | Field |
mkdir mongoose-demo
cd mongoose-demo
npm init -y
npm install -s mongoose
// app.js
const mongoose = require('mongoose')
mongoose.connect('mongodb://test:[email protected]:27017/testdb',{useNewUrlParser: true})
// 连接数据库的Connection
const User = mongoose.model('users', {name: String, age: Number, email: String})
const imooc = new User({
name: 'imooc-test',
age:30,
email: '[email protected]'
})
imooc.save().then(() => {console.log('save OK!')})
node app.js