
由于老产品即时通讯私有化软件就是采用MongoDB ,但是版本实在太低,要做大更新,其次针对10年前完美运营的项目来到10年后的现在就不一定行,优雅草卓伊凡最近一直在研究,同事们都忙着开发,但是疑难问题一直比较难处理,最近两周多一直在花时间处理数据库的问题。

MongoDB 是一款开源的 NoSQL 文档型数据库,由 MongoDB Inc.(原 10gen 公司)开发并维护。它采用 BSON(Binary JSON) 格式存储数据,支持动态模式(Schema-less),适用于处理非结构化或半结构化数据,如社交网络、物联网(IoT)、实时分析等场景。

MongoDB 由 Dwight Merriman、Eliot Horowitz 和 Kevin Ryan(DoubleClick 创始团队)于 2007 年 创立,最初是为了解决传统关系型数据库在 可扩展性 和 灵活性 方面的不足。

MongoDB 自 2009 年发布以来,经历了多个重要版本迭代,以下是关键版本及其特性:
版本 | 发布时间 | 主要改进 |
|---|---|---|
1.0 | 2009.02 | 首个正式版本,支持基本查询功能 |
2.0 | 2010.08 | 引入 分片(Sharding) 和 副本集(Replica Set) |
3.0 | 2015.03 | 引入 WiredTiger 存储引擎,大幅提升写入性能 |
4.0 | 2018.06 | 支持 多文档 ACID 事务(跨集合事务) |
5.0 | 2021.07 | 新增 时间序列集合(Time Series Collections) |
6.0 | 2022.07 | 支持 加密数据查询 |
7.0 | 2023.11 | 优化 分布式事务性能 和 查询引擎 |
您的项目使用的是 MongoDB 3.4.0(2016年发布),该版本已 停止维护,存在以下问题:
建议升级至 MongoDB 6.0+,以获取: ✅ 更高效的 WiredTiger 存储引擎 ✅ 完整 ACID 事务支持 ✅ 更好的分片与副本集管理


// 用户文档
{
"_id": "user123",
"name": "Alice",
"status": "online",
"chats": [
{ "chatId": "room1", "lastRead": "2025-07-22T10:00:00Z" }
]
}
// 聊天室文档
{
"_id": "room1",
"members": ["user123", "user456"],
"messages": [
{ "sender": "user123", "text": "Hello!", "timestamp": "2025-07-22T10:00:00Z" }
]
}mongodump 导出旧数据。messages.timestamp、user.status 等高频查询字段建立索引。snappy 或 zstd)减少存储占用。如需进一步优化 蜻蜓I水银版 的 MongoDB 部署,可参考 MongoDB Atlas(云托管方案)或 分片集群 架构。
但是目前腾讯云而言MongoDB的数据库版本最低都得4.0,因此升级迫在眉睫

MongoDB 是一个开源的、面向文档的 NoSQL 数据库,采用 BSON(二进制 JSON)格式存储数据,具有高性能、高可扩展性和灵活的数据模型。以下是其核心运行原理:
cache_size 参数)。insert, update)。journal)确保原子性。以下介绍在主流 Linux 系统和 macOS 上安装 MongoDB 的步骤。
# 导入 MongoDB 官方 GPG 密钥
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
# 添加 MongoDB 软件源
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# 更新包列表并安装 MongoDB
sudo apt-get update
sudo apt-get install -y mongodb-org
# 启动并设置开机自启
sudo systemctl start mongod
sudo systemctl enable mongod
# 验证安装
mongo --version# 创建 MongoDB 配置文件
sudo tee /etc/yum.repos.d/mongodb-org-6.0.repo <<EOF
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF
# 安装 MongoDB
sudo yum install -y mongodb-org
# 启动并设置开机自启
sudo systemctl start mongod
sudo systemctl enable mongod
# 验证安装
mongo --version# 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 添加 MongoDB 源
brew tap mongodb/brew
# 安装 MongoDB 社区版
brew install mongodb-community@6.0
# 启动 MongoDB 服务
brew services start mongodb-community@6.0
# 验证安装
mongosh --version/etc/mongod.conf/usr/local/etc/mongod.confsystemLog:
destination: file
path: /var/log/mongodb/mongod.log # 日志路径
logAppend: true
storage:
dbPath: /var/lib/mongo # 数据文件路径
journal:
enabled: true
net:
port: 27017
bindIp: 0.0.0.0 # 监听所有IP,生产环境建议改为具体IP# Linux
sudo systemctl start mongod # 启动
sudo systemctl stop mongod # 停止
sudo systemctl restart mongod # 重启
# macOS(使用 Homebrew)
brew services start mongodb-community@6.0
brew services stop mongodb-community@6.0# 连接到 MongoDB 服务
mongosh
# 在 shell 中验证
> db.version() # 查看版本
> db.createCollection("test") # 创建集合
> db.test.insertOne({name: "MongoDB"}) # 插入文档
> db.test.find() # 查询文档# 在 mongod.conf 中添加
security:
authorization: enabled创建管理员用户:
use admin
db.createUser({
user: "admin",
pwd: "password",
roles: ["root"]
})# 将 bindIp 改为服务器实际 IP 或 127.0.0.1
net:
bindIp: 127.0.0.1# Ubuntu/Debian
sudo ufw allow 27017/tcp
# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=27017/tcp
sudo firewall-cmd --reload# 使用 mongodump 备份
mongodump --out /backup/mongodb/$(date +%Y%m%d)
# 使用 mongorestore 恢复
mongorestore /backup/mongodb/20250722MongoDB 的灵活数据模型和分布式架构使其适合高并发、大数据量的应用场景。安装时需根据实际需求调整配置,生产环境中尤其要关注安全、性能和高可用性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。