CRUD 与聚合管道
查询操作符
更新操作
Tip
$inc、$push 等是服务端原子操作,比「读出 → 计算 → 写回」安全得多,能避免并发覆盖。计数器场景优先使用 $inc。
聚合管道
聚合管道是一系列阶段(stage),文档依次流经各阶段被处理:
分组与展开综合示例
多路聚合 $facet
Warning
聚合管道中 $match 和 $sort 应尽量放在最前面:放在 $group 之后会丢失索引能力,处理的数据量也更大。用 explain() 验证聚合是否走索引。
小结
- 查询操作符覆盖比较、逻辑、数组与正则;嵌套字段用点号。
- 更新优先使用原子操作符(
$inc、$push、$addToSet),配合upsert。 - 聚合管道的阶段顺序决定性能:
$match/$sort尽量前置。 $lookup弥补了关联查询,但性能不如关系型JOIN,建模时优先考虑嵌入。