首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MongoDB常用Shell操作:从入门到实战指南

MongoDB作为NoSQL数据库的代表,凭借灵活的数据模型和强大的扩展性,已成为后端开发的必备技能。本文将系统梳理MongoDB Shell的常用操作,涵盖数据库管理、文档操作、聚合分析、索引优化等核心场景,帮助开发者快速上手并高效应用。

一、环境搭建与基础命令

1. 连接数据库

# 本地默认连接

mongo

# 远程连接(含认证)

mongo 192.168.1.100:27017/admin -u root -p password

2. 数据库管理

// 查看所有数据库

show dbs

// 切换或创建数据库

use mydb

// 删除当前数据库

db.dropDatabase()

3. 集合操作

// 创建集合(自动创建无需显式声明)

db.createCollection("users")

// 查看集合

show collections

// 删除集合

db.users.drop()

二、文档的增删改查

1. 插入数据

// 插入单个文档

db.users.insertOne({

name:"Tom",

age:25,

email:"tom@example.com",

tags:["dev","mongodb"]

})

// 批量插入

db.users.insertMany([

{ name:"Jerry", age:30},

{ name:"Alice", age:22}

])

2. 查询数据

// 基础查询

db.users.find()

// 条件查询(精确匹配)

db.users.find({ name:"Tom"})

// 范围查询(年龄大于25)

db.users.find({ age:{ $gt:25}})

// 字段投影(仅显示name和email)

db.users.find({},{ name:1, email:1, _id:0})

// 正则匹配(名字以"A"开头)

db.users.find({ name:/^A/i })

3. 更新数据

// 更新单个文档

db.users.updateOne(

{ name:"Tom"},

{ $set:{ age:26}, $push:{ tags:"newbie"}}

)

// 更新多个文档

db.users.updateMany(

{ age:{ $lt:20}},

{ $set:{ status:"minor"}}

)

4. 删除数据

// 删除单个文档

db.users.deleteOne({ name:"Jerry"})

// 删除多个文档

db.users.deleteMany({ age:{ $lt:20}})

三、聚合分析与高级查询

1. 基础聚合统计

// 按状态分组统计数量

db.users.aggregate([

{ $group:{ _id:"$status", count:{ $sum:1}}}

])

2. 多阶段聚合(过滤+分组+排序)

// 统计活跃用户的平均年龄

db.users.aggregate([

{ $match:{ status:"active"}},

{ $group:{

  _id:null,

  avgAge:{ $avg:"$age"},

  total:{ $sum:1}

}},

{ $sort:{ avgAge:-1}}

])

3. 数组展开($unwind)

// 分析标签分布

db.users.aggregate([

{ $unwind:"$tags"},

{ $group:{

  _id:"$tags",

  count:{ $sum:1}

}}

])

四、索引与性能优化

1. 创建索引

// 单字段升序索引

db.users.createIndex({ name:1})

// 复合索引(name升序,age降序)

db.users.createIndex({ name:1, age:-1})

// 唯一索引

db.users.createIndex({ email:1},{ unique:true})

2. 索引管理

// 查看所有索引

db.users.getIndexes()

// 删除索引

db.users.dropIndex("name_1")

五、事务处理(副本集环境)

// 启动事务

const session = db.getMongo().startSession();

session.startTransaction();

try{

// 转账操作示例

db.accounts.updateOne(

{ name:"Alice"},

{ $inc:{ balance:-500}},

{ session }

);

db.accounts.updateOne(

{ name:"Bob"},

{ $inc:{ balance:500}},

{ session }

);

session.commitTransaction();

}catch(error){

session.abortTransaction();

throw error;

}

六、备份与恢复

# 备份整个数据库

mongodump --host 127.0.0.1--port 27017--db mydb --out /backup/

# 恢复备份

mongorestore --host 127.0.0.1--port 27017/backup/mydb

七、权限管理

// 创建管理员账号

use admin

db.createUser({

user:"admin",

pwd:"password",

roles:[{ role:"userAdminAnyDatabase", db:"admin"}]

})

// 授予集合级权限

use mydb

db.createUser({

user:"readonly",

pwd:"123456",

roles:[{ role:"read", db:"mydb"}]

})

学习进阶:从操作到实战能力

MongoDB不仅是技术工具,更是构建高性能系统的基石。掌握Shell操作是第一步,但真正的挑战在于如何结合业务场景设计数据模型、优化查询性能,以及应对分布式架构的复杂性。

想系统提升MongoDB实战能力?

你的每一份支持,都是我们持续创作的动力!如果这篇文章对你有帮助,欢迎打赏一杯咖啡,让我们共同见证你的技术成长之旅!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O-34Z21nE9iW0U1eNdurhZFg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券