MongoDB Shell入门:用命令行操作数据库超简单

MongoDB Shell是一个交互式工具,让你能用命令行直接和MongoDB数据库“对话”。它基于JavaScript语法,上手简单,特别适合初学者熟悉数据库的基本操作。

一、什么是MongoDB Shell?

MongoDB Shell(简称mongo)是MongoDB官方提供的命令行环境,你可以在这里执行创建、查询、修改、删除数据等操作。它让你无需图形界面,就能高效管理数据库,尤其适合Linux/Windows/Mac系统。

二、安装与启动MongoDB Shell

  1. 安装MongoDB:先确保你已安装MongoDB(官网可下载安装包)。安装完成后,Shell会随MongoDB一起安装。
  2. 启动Shell:打开终端/命令提示符,输入mongo即可进入Shell环境。
    - 成功启动后,你会看到类似以下提示:
     MongoDB shell version v6.0.0
     connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000
     Implicit session: session { "id" : UUID("...") }
     MongoDB server version: 6.0.0
     > 
  • 这里的>就是Shell的命令提示符,接下来可以输入命令了!

三、基础操作:连接与切换数据库

MongoDB的数据库操作基于“当前数据库”,用use命令切换。
- 查看当前数据库:输入db,会显示当前操作的数据库(默认是test)。

  > db
  test
  • 切换数据库:用use 数据库名切换,例如切换到myDB(若不存在,插入数据时会自动创建)。
  > use myDB
  switched to db myDB
  > db
  myDB
  • 连接远程数据库:如果数据库在远程服务器,用mongo --host 远程IP --port 端口号连接(默认端口27017)。

四、创建数据:插入文档到集合

MongoDB中,文档(类似JSON)是最小数据单元,集合(类似关系型数据库的“表”)是文档的容器。
- 自动创建集合:无需提前创建集合,插入数据时会自动生成。例如,向students集合插入一条文档:

  > db.students.insertOne({name: "小明", age: 18, major: "计算机"})
  {
    "acknowledged" : true,
    "insertedId" : ObjectId("650a1b2c3d4e5f6a7b8c9d0e"),
    "insertedCount" : 1
  }
  • insertOne():插入单条文档insertMany():插入多条(例如db.students.insertMany([{...}, {...}]))。
  • 插入后,MongoDB自动为每条文档生成唯一的_id(如ObjectId("...")),无需手动设置。

五、读取数据:查询文档

find()方法查询集合数据,搭配pretty()格式化输出更易读。
- 查询所有文档db.集合名.find().pretty()

  > db.students.find().pretty()
  {
    "_id" : ObjectId("650a1b2c3d4e5f6a7b8c9d0e"),
    "name" : "小明",
    "age" : 18,
    "major" : "计算机"
  }
  • 带条件查询:给find()加过滤条件,例如查询年龄18的学生:
  > db.students.find({age: 18}).pretty()
  {
    "_id" : ObjectId("650a1b2c3d4e5f6a7b8c9d0e"),
    "name" : "小明",
    "age" : 18,
    "major" : "计算机"
  }
  • 查询单条数据:用findOne()快速获取第一条匹配结果:
  > db.students.findOne({name: "小明"})
  {
    "_id" : ObjectId("650a1b2c3d4e5f6a7b8c9d0e"),
    "name" : "小明",
    "age" : 18,
    "major" : "计算机"
  }

六、更新数据:修改文档

updateOne()(更新一条)或updateMany()(更新多条),结合$set操作符修改字段。
- 更新单条数据:例如把小明的年龄改为20:

  > db.students.updateOne(
      {name: "小明"},  // 匹配条件
      {$set: {age: 20}}  // 更新操作
    )
  {
    "acknowledged" : true,
    "matchedCount" : 1,
    "modifiedCount" : 1
  }
  • 结果说明:matchedCount=1表示找到1条匹配数据,modifiedCount=1表示成功更新1条。
  • 更新多条数据:把所有年龄大于18的学生年龄+1:
  > db.students.updateMany(
      {age: {$gt: 18}},  // 条件:年龄>18
      {$inc: {age: 1}}   // $inc是自增1
    )

七、删除数据:移除文档

deleteOne()(删一条)或deleteMany()(删多条)。
- 删除单条数据:删除年龄20的学生:

  > db.students.deleteOne({age: 20})
  {
    "acknowledged" : true,
    "deletedCount" : 1
  }
  • 删除全部数据:清空students集合(谨慎使用!):
  > db.students.deleteMany({})
  {
    "acknowledged" : true,
    "deletedCount" : 5  // 假设集合有5条数据
  }

八、管理数据库与集合

  • 查看所有数据库show dbs(显示所有已存在的数据库,注意:空数据库不会显示)。
  • 删除当前数据库:先切换到目标数据库,再执行db.dropDatabase()
  > use myDB
  switched to db myDB
  > db.dropDatabase()
  { "dropped" : "myDB", "ok" : 1 }
  • 删除集合db.集合名.drop(),例如删除students集合:
  > db.students.drop()
  true  // 返回true表示删除成功

九、进阶小技巧

  1. 统计文档数量db.集合名.countDocuments()
   > db.books.countDocuments({author: "小明"})  // 统计作者是小明的书的数量
  1. 限制查询结果:用limit()只取前N条:
   > db.books.find().limit(3).pretty()  // 只返回前3条数据

十、学习建议

  • 多动手实践:跟着示例输入命令,尝试插入、查询、更新不同数据。
  • 查阅官方文档:MongoDB Shell支持完整的JavaScript语法,遇到复杂操作可参考官方手册
  • 从简单到复杂:先掌握CRUD基础,再学习聚合查询、索引等进阶内容。

MongoDB Shell的魅力在于“零配置”——无需提前创建数据库/表,插入数据即生效。通过命令行快速试错,是入门MongoDB最直接的方式。现在,打开你的终端,开始体验用代码“玩转”数据库吧!

小夜