linux使用docker安装MongoDB


linux使用docker安装MongoDB

一、安装docker

1
2
3
4
5
6
7
curl -fsSL https://get.docker.com | bash -s docker # 官方镜像
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun # 阿里镜像
curl -fsSL https://get.docker.com | bash -s docker --mirror AzureChinaCloud # Azurce中国镜像
启动:systemctl start docker
停止:systemctl stop docker
设置开机启动:systemctl enable docker
其他请参考:https://meaqua.fun/2024/06/29/docker_install/

二、Docker Compose 部署MongoDB

1
2
3
4
mkdir mongodb
cd mongodb
mkdir ./db ./backup
vim ./docker-compose.yml

填入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
mongodb:
image: mongo:latest
container_name: mongodb
network_mode: bridge
environment:
- TZ=Asia/Shanghai # 设置容器的时区为亚洲/上海
ports:
- "27017:27017"
volumes:
- ./db:/data/db
- ./backup:/backup # 如果有备份可以映射改文件夹,用于后续恢复数据
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
restart: unless-stopped

最后输入:wq保存即可

启动

执行docker compose up -d等待容器启动即可

使用

容器内命令行使用

1
2
3
4
5
6
7
8
9
10
进入docker内部:docker exec -it mongodb bash
帮助:mongosh --help
连接:mongosh --host 127.0.0.1 --port 27017
查看所有数据库:show dbs
切换数据库:use xxx
展示该数据库下所有集合:show collections
展示集合的数据:db.xxx.find()
退出命令行:quit
退出docker:exit
命令参考:https://docs.mongoing.com/the-mongo-shell/mongo-shell-quick-reference

nodejs

安装依赖npm i mongodb -S

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// db.js
const MongoClient = require('mongodb').MongoClient;
const dburl = "mongodb://localhost:27017";
const dbCollectionName = 'yyy'
const dbName = "xxx"
// 连接数据库
let dbo = null
async function dbconnect(){
const db = await MongoClient.connect(dburl, {
useNewUrlParser: true,
useUnifiedTopology: true
})
dbo = db.db(dbName);
}
// 查找数据
async function find(cod){
const dbData = await dbo
.collection(dbCollectionName)
.find({
// 查询条件
...cod
}).toArray();
console.log(dbData)
}
// 获取最新索引下标
async getNextSequence() {
const res = await dbo.collection(dbCollectionName).findOneAndUpdate(
{
increase: 1,
},
{
$inc: {
id: 1,
},
$set: {
des: "This line record total num",
},
},
{
upsert: true,
new: true,
// "returnOriginal": false
}
);
return res.value ? res.value.id : 0;
}
// 插入
async function inset(){
dbo.collection(dbCollectionName).insertOne({
id: getNextSequence() + 1,
// 其他需要插入的数据
});
}
// 更新
async function update(){
const recordItem = await find({...})
await dbo.collection(dbCollectionName).updateOne({
_id: recordItem._id
}, {
$set: {
// 需更新数据
}
});
}

参考资料