MongoDB Shell 是 MongoDB 提供的官方交互式界面,允许用户与 MongoDB 数据库进行交互、执行命令和操作数据库。MongoDB Shell 是基于 JavaScript 的,允许用户直接在命令行或者脚本中使用 JavaScript 语言来操作 MongoDB 数据库。下面是一些 MongoDB Shell (mongosh) 实战实例,涵盖数据库的 增、删、改、查 及一些高级操作。
1. 连接 MongoDB
首先,打开终端或命令行,输入:
mongosh
如果连接成功,会看到:
Connecting to: mongodb://127.0.0.1:27017
MongoDB Server version: 7.0
2. 数据库操作
创建 / 选择数据库
use myDatabase
如果 myDatabase 不存在,MongoDB 会在插入数据时自动创建。
查看当前数据库
db
查看所有数据库
show dbs
删除数据库
db.dropDatabase()
3. 集合(Collection)操作
创建集合
db.createCollection("users")
查看当前数据库中的所有集合:
show collections
删除集合
db.users.drop()
4. 插入数据
插入单条数据
db.users.insertOne({ name: "Alice", age: 25, city: "New York" })
插入多条数据
db.users.insertMany([
{ name: "Bob", age: 30, city: "London" },
{ name: "Charlie", age: 28, city: "Tokyo" },
{ name: "David", age: 35, city: "New York" }
])
5. 查询数据
查询所有文档
db.users.find()
格式化输出:
db.users.find().pretty()
查询单条数据
db.users.findOne({ name: "Alice" })
查询满足条件的数据
查询所有 city 为 “New York” 的用户:
db.users.find({ city: "New York" })
查询满足多个条件的数据
查询 age > 28 且 city 是 “New York” 的用户:
db.users.find({ age: { $gt: 28 }, city: "New York" })
查询满足多个条件($or)
查询 city 是 “New York” 或者 “London” 的用户:
db.users.find({ $or: [ { city: "New York" }, { city: "London" } ] })
投影查询(只返回 name 和 city,不返回 _id)
db.users.find({}, { name: 1, city: 1, _id: 0 })
6. 更新数据
更新单条数据
把 "Alice" 的 age 改成 26:
db.users.updateOne({ name: "Alice" }, { $set: { age: 26 } })
更新多条数据
把所有 city 为 “New York” 的用户 增加字段 country=”USA”:
db.users.updateMany({ city: "New York" }, { $set: { country: "USA" } })
使用 $inc 增加字段值
让所有 city 为 “Tokyo” 的用户 年龄增加 2 岁:
db.users.updateMany({ city: "Tokyo" }, { $inc: { age: 2 } })
7. 删除数据
删除单条数据
删除 name=”Charlie” 的用户:
db.users.deleteOne({ name: "Charlie" })
删除多条数据
删除所有 city=”London” 的用户:
db.users.deleteMany({ city: "London" })
清空整个集合
db.users.deleteMany({})
8. 统计 & 排序
统计用户数量
db.users.countDocuments()
统计 city=”New York” 的用户数量:
db.users.countDocuments({ city: "New York" })
排序(按 age 降序排列)
db.users.find().sort({ age: -1 })
按 age 升序排列:
db.users.find().sort({ age: 1 })
分页查询
查询第 2 页(每页 2 条):
db.users.find().skip(2).limit(2)
9. 创建索引
索引可以提高查询速度,例如在 name 字段上创建索引:
db.users.createIndex({ name: 1 })
查看集合的索引:
db.users.getIndexes()
删除索引:
db.users.dropIndex({ name: 1 })
10. 事务(适用于副本集模式)
开启事务
session = db.getMongo().startSession()
session.startTransaction()
执行数据库操作
usersCollection = session.getDatabase("myDatabase").users
usersCollection.insertOne({ name: "Eve", age: 27 })
提交事务
session.commitTransaction()
session.endSession()
回滚事务
session.abortTransaction()
session.endSession()
11. 退出 MongoDB Shell
exit
或者:
.quit()
总结
| 操作 | 命令 |
|---|---|
| 创建数据库 | use myDatabase |
| 查看所有数据库 | show dbs |
| 创建集合 | db.createCollection("users") |
| 插入数据 | db.users.insertOne({...}) |
| 查询数据 | db.users.find({city: "New York"}) |
| 更新数据 | db.users.updateOne({name: "Alice"}, { $set: { age: 26 } }) |
| 删除数据 | db.users.deleteOne({name: "Bob"}) |
| 删除集合 | db.users.drop() |
| 删除数据库 | db.dropDatabase() |
| 统计数据 | db.users.countDocuments() |
| 索引优化 | db.users.createIndex({name: 1}) |
| 事务管理 | session.startTransaction() |
这就是 MongoDB Shell (mongosh) 的基本操作!更多详细内容请关注其他相关文章。
官方安装说明:https://www.mongodb.com/zh-cn/docs/mongodb-shell/install/