首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MongoDB-增删改查(CRUD)

MongoDB-增删改查(CRUD)

作者头像
运维小路
发布2026-01-26 12:42:33
发布2026-01-26 12:42:33
780
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL

PostgreSQL

MongoDB(本章节)

Redis

Etcd

我们从库(Database)表(Collection,集合)数据(Document,文档) 这三个层面来系统地介绍MongoDB的增删改查(CRUD)操作。

核心概念对应关系

传统关系型数据库 (如MySQL)

MongoDB

数据库 (Database)

数据库 (Database)

表 (Table)

集合 (Collection)

行 (Row)

文档 (Document)

列 (Column)

字段 (Field)

库(Database)

增 (Create) - 创建/切换数据库
注:这里如果只是这个命令,退出以后他是不会持久化的,这个数据库下面必须有内容的时候他才会真正被创建。
代码语言:javascript
复制
//创建并切换到 myShop的数据库
use myShop 
查 (Read) - 查看所有数据库
代码语言:javascript
复制
# 显示所有非空数据库
show dbs
show databases

删(Delete)- 删除数据库

代码语言:javascript
复制
// 首先切换到要删除的数据库
use myShop
// 然后删除它
db.dropDatabase()

表(Collection,集合)

增 (Create) - 创建集合

有显式和隐式两种方式。

隐式创建:直接向一个不存在的集合插入文档,集合会被自动创建。这是最常用的方式,如果数据库未成功创建,数据库也会同时创建。

代码语言:javascript
复制
use myShop
// 向 `users` 集合插入一条数据,如果 `users` 集合不存在,则自动创建
db.users.insertOne({name: "Alice", age: 25})

显式创建:使用 createCollection 方法,通常用于创建有特殊选项(如固定大小、校验规则等)的集合。

代码语言:javascript
复制
use myShop
// 创建一个普通的 `products` 集合
db.createCollection("products")

// 创建一个固定大小的集合(常用于日志,达到大小后旧数据会被覆盖)
db.createCollection("logs", { capped: true, size: 100000 })
查 (Read) - 查看当前数据库中的所有集合
代码语言:javascript
复制
use myShop
show collections
删 (Delete) - 删除集合
代码语言:javascript
复制
use myShop
// 删除 `products` 集合
db.products.drop()

数据(Document,文档)

增 (Create) - 插入文档
插入单条文档:insertOne()
代码语言:javascript
复制
db.users.insertOne({
    name: "Bob",
    age: 30,
    email: "bob@example.com",
    hobbies: ["reading", "hiking"],
    address: { city: "Beijing", street: "123 Main St" }
})
插入多条文档insertMany()
代码语言:javascript
复制
db.users.insertMany([
    { name: "Charlie", age: 35 },
    { name: "David", age: 28 },
    { name: "Eve", age: 32 }
])
查 (Read) - 查询文档
查询集合中的所有文档:
代码语言:javascript
复制
#查询user集合中所有数据
db.users.find()
条件查询:传入一个查询条件对象。
代码语言:javascript
复制
// 查找所有 age 等于 30 的用户
db.users.find({ age: 30 })

// 查找所有 age 大于 28 的用户
db.users.find({ age: { $gt: 28 } }) // $gt 是 "大于" 操作符
投影 (Projection):只返回指定的字段。1 表示包含,0 表示排除。
代码语言:javascript
复制
// 只返回 name 和 email 字段,不返回 _id
db.users.find(
    { age: { $gt: 28 } }, // 查询条件
    { name: 1, email: 1, _id: 0 } // 投影
)
查询一条文档:findOne()
代码语言:javascript
复制
// 返回第一个匹配的文档
db.users.findOne({ name: "Alice" })
改 (Update) - 更新文档
更新单条文档:updateOne()
代码语言:javascript
复制
// 将第一个名为 "Bob" 的用户年龄更新为 31
db.users.updateOne(
    { name: "Bob" }, // 过滤条件
    { $set: { age: 31 } } // 更新操作:$set 操作符用于设置字段值
)
更新多条文档:updateMany()
代码语言:javascript
复制
// 为所有年龄大于 30 的用户添加一个 `tags` 字段
db.users.updateMany(
    { age: { $gt: 30 } },
    { $set: { tags: ["senior"] } }
)
替换文档replaceOne() - 用新文档完全替换匹配的文档(除了 _id)。
代码语言:javascript
复制
db.users.replaceOne(
    { name: "Charlie" },
    { fullName: "Charlie Brown", job: "Developer" } // 新文档,完全替换旧文档
)
删 (Delete) - 删除文档

删除单条文档:deleteOne()

代码语言:javascript
复制
// 删除第一个名为 "David" 的用户
db.users.deleteOne({ name: "David" })

删除多条文档deleteMany()

代码语言:javascript
复制
// 删除所有年龄小于 25 的用户
db.users.deleteMany({ age: { $lt: 25 } })

// 清空整个集合(删除所有文档)
db.users.deleteMany({})
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB(本章节)
    • 核心概念对应关系
      • 增 (Create) - 创建/切换数据库
      • 注:这里如果只是这个命令,退出以后他是不会持久化的,这个数据库下面必须有内容的时候他才会真正被创建。
      • 查 (Read) - 查看所有数据库
      • 增 (Create) - 创建集合
      • 查 (Read) - 查看当前数据库中的所有集合
      • 删 (Delete) - 删除集合
      • 增 (Create) - 插入文档
      • 插入单条文档:insertOne()
      • 插入多条文档:insertMany()
      • 查 (Read) - 查询文档
      • 查询集合中的所有文档:
      • 条件查询:传入一个查询条件对象。
      • 投影 (Projection):只返回指定的字段。1 表示包含,0 表示排除。
      • 查询一条文档:findOne()
      • 改 (Update) - 更新文档
      • 更新单条文档:updateOne()
      • 更新多条文档:updateMany()
      • 替换文档:replaceOne() - 用新文档完全替换匹配的文档(除了 _id)。
      • 删 (Delete) - 删除文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档