Skip to main content

3. MongoDB

什么是 MongoDB?

MongoDB 是一种 NoSQL 数据库,使用 JSON 风格的文档存储数据,适用于高扩展性和大数据处理场景。

info

MongoDB 适用于大规模数据存储、实时应用、日志管理等场景。

MongoDB 数据结构

MongoDB 使用 集合(Collection) 代替传统关系型数据库的表,文档(Document) 代替表中的行。示例如下:

{
"_id": ObjectId("507f1f77bcf86cd799439011"),
"name": "Alice",
"age": 30,
"email": "alice@example.com"
}

创建数据库和集合

// 连接 MongoDB
use myDatabase;

// 创建集合(等价于创建表)
db.createCollection("users");

增删改查(CRUD)操作

// 插入数据
db.users.insertOne({ name: "Alice", age: 30, email: "alice@example.com" });

// 查询数据
db.users.find({ age: { $gt: 25 } });

// 更新数据
db.users.updateOne({ name: "Alice" }, { $set: { age: 31 } });

// 删除数据
db.users.deleteOne({ name: "Alice" });

复杂查询示例

// 查找年龄大于 25 且名字为 Alice 的用户
db.users.find({ $and: [{ age: { $gt: 25 } }, { name: "Alice" }] });

// 按年龄排序
db.users.find().sort({ age: -1 });

// 限制返回结果数量
db.users.find().limit(5);

索引优化

// 为 name 字段创建索引
db.users.createIndex({ name: 1 });

// 查询优化:利用索引加速查找
db.users.find({ name: "Alice" }).explain("executionStats");

事务处理

使用事务保证数据一致性
session = db.getMongo().startSession();
session.startTransaction();

try {
db.users.insertOne({ name: "Bob", age: 28 }, { session });
db.orders.insertOne({ user: "Bob", item: "Laptop" }, { session });
session.commitTransaction();
} catch (error) {
session.abortTransaction();
}

结论

MongoDB 是一个强大的 NoSQL 数据库,适用于各种高性能应用场景。其灵活的数据结构和强大的查询功能使其成为现代开发的热门选择。

更多 MongoDB 资源