MongoDB 启动!
- 用 api 操作数据库,而非 sql,爽!
- mongoDB 的 database 下是 collection,collection 包含多个 document (mysql
)。 - document 可以是任意结构的,这点和 mysql 的 table 不同。
CRUD
1 |
|
QuerySelector
**$in**
:用于判断字段值是否在给定的数组中,相当于 SQL 的IN
。**$gt**
:匹配大于某个值的文档,对应 SQL 的>
。**$lt**
:匹配小于某个值的文档,对应 SQL 的<
。**$gte**
:匹配大于或等于某个值的文档,对应 SQL 的>=
。**$lte**
:匹配小于或等于某个值的文档,对应 SQL 的<=
。**$ne**
:匹配不等于某个值的文档,对应 SQL 的<>
或!=
。
….
表关系
在关系型数据库中,我们使用外键和关联表来处理表与表之间的关系。而在 MongoDB 这样的文档型数据库中,没有内建的外键约束,常见的处理方式有两种:
嵌入(Embedding)
将相关数据直接嵌入到一个文档中,适用于“一对一”或“一对少”的关系。这种方式查询快,但数据冗余和更新较困难。
引用(Referencing)<更常用>
在文档中保存其他文档的 _id(ObjectId),需要时通过 Mongoose 的 populate() 方法进行关联查询。适用于“一对多”或“多对多”关系,虽然查询时需要额外操作,但数据保持独立,更新方便。
操作符与字段引用 $
聚合计算中的字段需要
$
引用, 直接使用如$lookup
(join on) 不需要,因为 localField 与 foreignField 本身就是引用
在 MongoDB 中,$
前缀用于标识 操作符 或 字段引用,如:
"$sum"
,"$max"
这样的操作符用于在$group
阶段进行聚合计算。"$userId"
,"$amount"
等字段引用,通常用于$group
,$match
,$project
等阶段,用来引用当前文档中的字段。
更新操作符
$set
是 MongoDB 的更新操作符,它的作用是将指定字段的值设置为新的值。如果该字段不存在,则会创建该字段。- $inc:用于对数值类型字段进行递增或递减操作。例如:
{ $inc: { score: 1 } }
会使 score 字段加 1。 - $unset:用于删除指定字段。例如:
{ $unset: { fieldName: "" } }
会将 fieldName 字段从文档中移除。 - $push:用于向数组字段中添加新元素。
- $pull:用于从数组中移除满足条件的元素。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!