简介:本文全面解析MongoDB的核心功能与使用技巧,涵盖安装部署、数据建模、CRUD操作、索引优化及高可用架构设计,助力开发者高效管理非关系型数据库。
MongoDB是一款基于文档的非关系型数据库(NoSQL),采用BSON(Binary JSON)格式存储数据,支持灵活的数据模型和水平扩展能力。其核心优势包括:
apt
或brew
)安装MongoDB社区版,或下载官方.tgz
包解压后配置环境变量。/etc/mongod.conf
(Linux)或mongod.cfg
(Windows),调整dbPath
、port
、bindIp
等参数。示例:启动MongoDB服务
# Linux启动命令
sudo systemctl start mongod
# Windows启动命令(管理员权限)
net start MongoDB
mongo
命令进入交互式终端,执行show dbs
查看数据库列表,use <dbname>
切换数据库。_id
字段关联不同集合,适用于一对多或低频访问场景。
// 插入单条文档
db.users.insertOne({
name: "Alice",
age: 28,
skills: ["JavaScript", "Python"]
});
// 插入多条文档
db.users.insertMany([
{name: "Bob", age: 32},
{name: "Charlie", age: 25}
]);
// 条件查询
db.users.find({age: {$gt: 25}});
// 投影(返回指定字段)
db.users.find({}, {name: 1, _id: 0});
// 排序与分页
db.users.find().sort({age: -1}).skip(10).limit(5);
// 替换整个文档
db.users.replaceOne({name: "Alice"}, {name: "Alice", title: "Engineer"});
// 部分字段更新
db.users.updateOne(
{name: "Bob"},
{$set: {age: 33}, $push: {skills: "MongoDB"}}
);
// 删除匹配的第一条文档
db.users.deleteOne({name: "Charlie"});
// 删除所有匹配文档
db.users.deleteMany({age: {$lt: 30}});
db.users.createIndex({name: 1})
)。db.orders.createIndex({customerId: 1, date: -1})
)。db.users.createIndex({"skills": 1})
)。db.logs.createIndex({createdAt: 1}, {expireAfterSeconds: 3600})
)。explain()
分析查询计划。rs.initiate({_id: "rs0", members: [{_id: 0, host: "mongo1:27017"}]})
。rs.add("mongo2:27017")
。rs.status()
。示例:启用分片
// 启用数据库分片
sh.enableSharding("mydb");
// 对集合分片
sh.shardCollection("mydb.users", {userId: "hashed"});
security.authorization: enabled
,创建管理员用户后重启服务。db.createRole()
和db.grantRolesToUser()
实现细粒度权限控制。bulkWrite()
减少网络往返,提升写入吞吐量。mongodump
/mongorestore
和WiredTiger存储引擎的快照功能制定备份计划。结语:MongoDB凭借其灵活的数据模型和强大的扩展能力,已成为现代应用开发的热门选择。通过掌握本文介绍的核心概念与操作技巧,开发者能够高效构建高性能、高可用的数据库系统,应对日益复杂的业务挑战。