← 返回文章列表
数据库·376 次阅读

MongoDB 入门:文档、集合与查询

MongoDB 入门:文档、集合与查询

MongoDB 是最流行的文档型数据库,数据以 BSON(二进制 JSON)存储,对 JS 开发者格外友好。

核心概念对照

关系型 MongoDB
database database
table 表 collection 集合
row 行 document 文档
column 列 field 字段

文档就是一个 JSON 对象,集合是文档的容器,不要求文档结构一致。每个文档自带唯一的 _id(类似主键)。

基础 CRUD

// 插入
db.posts.insertOne({ title: 'a', status: 'PUBLISHED', views: 0 })
db.posts.insertMany([{ title: 'b' }, { title: 'c' }])

// 查询
db.posts.findOne({ _id: ObjectId('5f...') })
db.posts.find({ status: 'PUBLISHED' }).sort({ createdAt: -1 }).limit(10)

// 更新
db.posts.updateOne({ _id: id }, { $set: { title: '新标题' } })
db.posts.updateOne({ _id: id }, { $inc: { views: 1 } }) // 原子自增

// 删除
db.posts.deleteOne({ _id: id })

查询操作符

db.posts.find({
  views: { $gt: 100, $lt: 1000 },       // 范围
  status: { $in: ['PUBLISHED', 'DRAFT'] }, // 枚举
  title: { $regex: 'js', $options: 'i' },  // 模糊
})

嵌入文档与数组

关系型要拆三张表的数据,Mongo 可以直接嵌入:

db.posts.insertOne({
  title: 'a',
  author: { name: 'Dong' },       // 嵌入对象
  tags: [{ name: 'js' }, { name: 'vue' }], // 嵌入数组
})
db.posts.find({ 'author.name': 'Dong' }) // 点语法查嵌套

一次读取就拿到整篇文章及关联数据,没有 JOIN 的开销。但嵌入适合"关联数据总是一起读"的场景,如果作者信息要被大量文章引用且单独更新,还是用引用(手动存 id)更合适——这就是数据模型设计上的取舍。

看到这里了?如果这篇文章帮到过你

请我喝瓶可乐就好 🥤

收款码

评论0 条

还没有评论,来抢沙发~

发表评论

评论需审核后显示

© 2026 许冬博客 · 专注 JS 技术分享

·RSS 订阅·Powered by Nuxt 4