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)操作
- JavaScript
- Python
// 插入数据
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" });
from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017/")
db = client["myDatabase"]
collection = db["users"]
# 插入数据
collection.insert_one({"name": "Alice", "age": 30, "email": "alice@example.com"})
# 查询数据
for user in collection.find({"age": {"$gt": 25}}):
print(user)
# 更新数据
collection.update_one({"name": "Alice"}, {"$set": {"age": 31}})
# 删除数据
collection.delete_one({"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 数据库,适用于各种高性能应用场景。其灵活的数据结构和强大的查询功能使其成为现代开发的热门选择。