MongoDB Shell是官方提供的交互式JavaScript环境,用于连接和操作MongoDB实例,是日常开发调试、数据管理的重要工具。下面我们通过实际示例来学习它的基础用法。

一、启动与连接MongoDB Shell
首先确保本地已经安装并启动了MongoDB服务,默认端口为27017。打开终端输入以下命令即可启动Shell并连接到本地实例:
# 连接本地默认端口的MongoDB实例 mongosh # 若需要连接指定地址和端口的实例,可以使用如下格式 mongosh "mongodb://127.0.0.1:27017"
连接成功后会进入交互式界面,会显示当前连接的实例信息、MongoDB版本等内容。
二、基础数据库与集合操作
MongoDB中数据库和集合的概念和关系型数据库有区别,不需要提前创建,在插入数据时如果对应的库或集合不存在会自动创建。
1. 数据库操作
常用的数据库操作命令如下:
show dbs:查看所有已存在的数据库use 数据库名:切换到指定数据库,若库不存在则会在第一次插入数据时创建db.dropDatabase():删除当前所在的数据库
示例如下:
// 切换到test_db数据库,若不存在后续插入数据会自动创建 use test_db // 查看当前所在的数据库 db // 删除当前test_db数据库 db.dropDatabase()
2. 集合操作
集合相当于关系型数据库中的表,基础操作命令如下:
show collections:查看当前数据库下的所有集合db.createCollection("集合名"):手动创建集合db.集合名.drop():删除指定集合
示例如下:
// 手动创建名为user的集合
db.createCollection("user")
// 查看当前所有集合
show collections
// 删除user集合
db.user.drop()三、文档的增删改查操作
文档是MongoDB中存储数据的基本单位,格式为JSON风格的BSON结构,下面我们学习最常用的CRUD操作。
1. 插入文档
插入文档可以使用insertOne插入单条,insertMany插入多条:
// 插入单条用户文档
db.user.insertOne({
name: "张三",
age: 25,
hobby: ["篮球", "阅读"],
register_time: new Date()
})
// 插入多条用户文档
db.user.insertMany([
{ name: "李四", age: 22, hobby: ["足球"], register_time: new Date() },
{ name: "王五", age: 28, hobby: ["编程", "音乐"], register_time: new Date() }
])2. 查询文档
查询使用find方法,可以传入查询条件筛选数据:
// 查询user集合中所有文档
db.user.find()
// 查询年龄大于23岁的用户
db.user.find({ age: { $gt: 23 } })
// 查询name为张三的用户,只返回name和age字段
db.user.find({ name: "张三" }, { name: 1, age: 1, _id: 0 })3. 更新文档
更新使用updateOne更新单条,updateMany更新多条,注意要配合更新操作符使用:
// 将name为张三的用户年龄更新为26
db.user.updateOne(
{ name: "张三" },
{ $set: { age: 26 } }
)
// 将所有年龄小于25的用户添加status字段,值为active
db.user.updateMany(
{ age: { $lt: 25 } },
{ $set: { status: "active" } }
)4. 删除文档
删除使用deleteOne删除单条,deleteMany删除多条:
// 删除name为李四的用户
db.user.deleteOne({ name: "李四" })
// 删除所有年龄大于27的用户
db.user.deleteMany({ age: { $gt: 27 } })四、常用辅助命令
除了基础操作外,还有一些常用的辅助命令可以提升使用效率:
db.集合名.getIndexes():查看集合的索引信息db.集合名.stats():查看集合的状态信息,比如文档数量、存储大小等help:查看Shell支持的帮助命令db.help():查看数据库级别的帮助命令
实际使用中如果遇到不熟悉的方法,可以通过db.集合名.方法名.help()查看该方法的详细说明和示例,比如db.user.find.help()可以查看find方法的使用说明。