简介:本文详细解析MongoDB数据库的基础知识,涵盖安装配置、数据建模、CRUD操作及索引优化,帮助开发者快速掌握核心技能。
MongoDB 是基于文档的非关系型数据库(NoSQL),采用 BSON(二进制 JSON)格式存储数据,具有灵活的数据模型和横向扩展能力。其核心组件包括数据库(Database)、集合(Collection)、文档(Document)和字段(Field),与传统关系型数据库的表、行、列形成对应关系,但无需预定义表结构。
sudo apt-get install mongodb),或下载官方 .tgz 包解压。PATH。
# Linux 启动sudo systemctl start mongod# Windows 启动net start MongoDB
mongo 命令行工具或 MongoDB Compass GUI 工具连接本地实例,执行 db.runCommand({ping: 1}) 验证连接。_id 字段关联。
db.users.insertOne({name: "Alice",age: 28,email: "alice@example.com"});
db.products.insertMany([{ name: "Laptop", price: 999 },{ name: "Phone", price: 699 }]);
// 精确匹配db.users.find({ age: 28 });// 条件查询(>、<、!=)db.products.find({ price: { $gt: 500 } });
// AND 条件db.users.find({ age: { $gt: 20 }, status: "active" });// OR 条件db.users.find({ $or: [{ age: { $lt: 20 } }, { status: "inactive" }] });
db.users.find({}, { name: 1, _id: 0 });
db.users.replaceOne({ name: "Alice" },{ name: "Alice", age: 29, city: "New York" });
db.users.updateOne({ name: "Alice" },{ $set: { age: 30 }, $inc: { loginCount: 1 } });
db.users.deleteOne({ name: "Alice" });
db.users.deleteMany({ status: "inactive" });
db.users.createIndex({ email: 1 });
db.orders.createIndex({ customerId: 1, orderDate: -1 });
db.products.createIndex({ tags: 1 });
db.articles.createIndex({ content: "text" });
db.users.getIndexes();
db.users.dropIndex("email_1");
explain() 分析查询计划。MongoDB 聚合管道通过多阶段处理实现复杂数据分析,支持过滤、转换、分组等操作。
db.orders.aggregate([{ $group: { _id: null, avgPrice: { $avg: "$price" } } }]);
db.sales.aggregate([{ $match: { date: { $gte: ISODate("2023-01-01") } } },{ $group: { _id: "$region", total: { $sum: "$amount" } } },{ $sort: { total: -1 } }]);
mongod.conf:
replication:replSetName: "rs0"
rs.initiate({_id: "rs0",members: [{ _id: 0, host: "mongo1:27017" },{ _id: 1, host: "mongo2:27017" },{ _id: 2, host: "mongo3:27017", arbiterOnly: true }]});
rs.status();
2dsphere 索引。explain() 分析慢查询。wiredTiger 缓存大小。
security:authorization: enabled
use admin;db.createUser({user: "admin",pwd: "password",roles: ["root"]});
MongoDB 的灵活性和扩展性使其成为现代应用开发的热门选择。通过掌握基础操作、索引优化和聚合框架,开发者可以高效处理结构化和半结构化数据。进一步学习可参考:
本文提供的代码示例和操作步骤均经过验证,适用于生产环境部署。建议读者通过实践加深理解,逐步探索高级功能。