泉缘泉 发表于 2025-9-23 06:43:57

mongodb学习

一、安装

1. 预备安装情况

# 更新系统软件包
sudo yum update -y

# 安装基础依赖
sudo yum install -y libcurl openssl
2.创建MongoDB堆栈文件

// centos7
sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo <<EOF

name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
// centos8
sudo tee /etc/yum.repos.d/mongodb-org-8.0.repo <<EOF

name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/8.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-8.0.asc
EOF
3.安装 MongoDB 软件包

sudo yum install -y mongodb-org
4.设置 MongoDB

sudo vi /etc/mongod.conf
net:
port: 27017
bindIp: 0.0.0.0# 如需远程访问,改为0.0.0.0

security:
authorization: enabled# 启用认证
5. 启动 MongoDB 服务

sudo systemctl status mongod
sudo systemctl start mongod
sudo systemctl enable mongod
6.创建管理员用户

毗连到 MongoDB 服务器:

mongosh
# MongoDB 服务器运行在非默认端口或者远程服务器上
mongosh --host <hostname>:<port>
# 启用身份验证后,你需要使用创建的用户身份连接到 MongoDB:
mongosh --host <hostname> --port <port> -u "testuser" -p "password123" --authenticationDatabase "<database_name>"
use admin
db.createUser({
user: "admin",
pwd: "YourSecurePassword123!", // 请改为强密码
roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" },
    { role: "dbAdminAnyDatabase", db: "admin" },
    { role: "clusterAdmin", db: "admin" }
]
})
exit
use test
db.createUser({
user: "testuser",
pwd: "password123",
roles: [
    { role: "readWrite", db: "<database_name>" },
    { role: "dbAdmin", db: "<database_name>" }
]
})
删除用户

db.dropUser("testuser")
7.重启服务使认证见效

sudo systemctl restart mongod
8. 维护(可选)与常见题目办理

备份

# 定期备份:
mongodump --uri="mongodb://admin:Xkzh666888@localhost:27017" --out=/backup/mongodb-$(date +%F)
设置定期维护任务:
# 每月重建索引
echo "0 3 1 * * mongo --eval 'db.getSiblingDB(\"admin\").runCommand({reIndex: \"system.profile\"})'" | sudo tee -a /etc/crontab
重修索引

1.手动重修单个集合索引

use yourDatabase
db.yourCollection.reIndex()
2. 主动化脚本(每月实行)

#!/bin/bash
# 每月1日凌晨3点执行
MONGO_URI="mongodb://admin:password@localhost:27017/admin?tls=true"

# 获取所有数据库(排除系统库)
DATABASES=$(mongo "$MONGO_URI" --quiet --eval "db.adminCommand({listDatabases:1}).databases.forEach(function(d){if(!['admin','local','config'].includes(d.name))print(d.name)})")

# 遍历数据库重建索引
for DB in $DATABASES; do
COLLECTIONS=$(mongo "$MONGO_URI" --quiet --eval "db.getSiblingDB('$DB').getCollectionNames().forEach(function(c){print(c)})")

for COL in $COLLECTIONS; do
    echo "重建 $DB.$COL 索引..."
    mongo "$MONGO_URI" --quiet --eval "db.getSiblingDB('$DB').getCollection('$COL').reIndex()"
done
done
3.通过 crontab 设置定时任务

# 编辑定时任务
sudo crontab -e

# 添加以下内容(每月1日凌晨3点执行)
0 3 1 * * /path/to/your/reindex_script.sh >> /var/log/mongodb/reindex.log 2>&1
4. 重修结果验证

// 查看索引大小变化
db.collection.stats().indexSizes

// 检查查询执行计划
db.collection.find({yourQuery}).explain("executionStats")
8.3 常见题目办理

# 查看错误日志
sudo cat /var/log/mongodb/mongod.log

# 常见问题1:数据目录权限
sudo chown -R mongod:mongod /var/lib/mongo

# 常见问题2:端口占用
sudo netstat -tulnp | grep 27017
9.基本操作


[*]检察当前数据库:db
[*]显示数据库列表:show dbs
[*]切换到指定命据库:use <database_name>
[*]实行查询操作:db.<collection_name>.find()
[*]插入文档:db.<collection_name>.insertOne({ … })
[*]更新文档:db.<collection_name>.updateOne({ … })
[*]删除文档:db.<collection_name>.deleteOne({ … })
[*]退出 MongoDB Shell:quit() 大概 exit
# 启动 MongoDB Shell
mongosh

# 连接到本地 MongoDB 服务器
test> show dbs
admin   40.00 KiB
config72.00 KiB
local   40.00 KiB
runoob72.00 KiB
test> use runoob
switched to db runoob

# 插入文档
runoob> db.mycollection.insertOne({ name: "Alice", age: 30 })
{
acknowledged: true,
insertedId: ObjectId('667cd8789a69705686ed70f2')
}


# 查询文档
runoob> db.mycollection.find()
[
{ _id: ObjectId('667cd8789a69705686ed70f2'), name: 'Alice', age: 30 }
]

# 更新文档
runoob> db.mycollection.updateOne({ name: "Alice" }, { $set: { age: 31 } })
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}

# 删除文档
runoob> db.mycollection.deleteOne({ name: "Alice" })
{ acknowledged: true, deletedCount: 1 }

# 退出 MongoDB Shell
runoob> quit()
二、项目利用

application.yml
# Spring配置
spring:
data:
    mongodb:
      uri: mongodb://admin:Xkzh666888@120.77.38.122:27017/archive_db?authSource=admin
pom.xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: mongodb学习