游戏服务所用的数据库主要有Mysql、Mongodb、Redis。
Redis与Mysql的使用我已经很熟悉,于是记录一下Mongodb的使用。
MongoDB在使用时可以直接创建出对应的库和表。
MongoDB 简介
MongoDB 是一个开源的 NoSQL 数据库,采用文档存储模型,具有以下特点:
面向文档存储:数据以 BSON(Binary JSON)格式存储,支持嵌套结构
高可扩展性:支持水平扩展和分片集群
灵活的模式:不需要预定义严格的表结构
高性能:支持索引、聚合管道等优化查询性能
基本使用方法
1. 数据库操作
// 显示所有数据库
show dbs
// 切换/创建数据库
use myDatabase
// 显示当前数据库
db.getName()
// 删除当前数据库
db.dropDatabase()2. 集合操作(Collections)
// 插入单个文档
db.users.insertOne({
name: "张三",
age: 25,
email: "zhangsan@example.com"
})
// 插入多个文档
db.users.insertMany([
{ name: "李四", age: 30, email: "lisi@example.com" },
{ name: "王五", age: 28, email: "wangwu@example.com" }
])查询文档
// 查询所有文档
db.users.find()
// 条件查询
db.users.find({ age: { $gt: 25 } })
// 查询单个文档
db.users.findOne({ name: "张三" })
// 投影查询(只返回指定字段)
db.users.find({}, { name: 1, age: 1, _id: 0 })更新文档
// 更新单个文档
db.users.updateOne(
{ name: "张三" },
{ $set: { age: 26 } }
)
// 更新多个文档
db.users.updateMany(
{ age: { $lt: 30 } },
{ $set: { status: "active" } }
)删除文档
// 删除匹配的第一个文档
db.users.deleteOne({ name: "张三" })
// 删除所有匹配的文档
db.users.deleteMany({ age: { $lt: 18 } })4. 索引操作
// 创建索引
db.users.createIndex({ email: 1 }) // 1 表示升序,-1 表示降序
// 创建复合索引
db.users.createIndex({ name: 1, age: -1 })
// 查看索引
db.users.getIndexes()
// 删除索引
db.users.dropIndex({ email: 1 })5. 聚合操作
// 使用聚合管道进行复杂查询
db.users.aggregate([
{ $match: { age: { $gte: 18 } } },
{ $group: { _id: "$status", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])常用查询操作符
比较操作符:
$eq,$ne,$gt,$gte,$lt,$lte逻辑操作符:
$and,$or,$not,$nor数组操作符:
$in,$nin,$all,$elemMatch更新操作符:
$set,$unset,$inc,$push,$pull