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 条
还没有评论,来抢沙发~