首页/数据/NoSQL 速查/聚合 $merge 增量写出
MongoDB99 条

聚合 $merge 增量写出

$merge 把管道结果合并回集合:按 on 字段匹配,支持 insert/merge/replace/keepExisting/fail 等冲突处理方式。

NoSQL 速查数据更新于 2026-10-12
语法{ $merge: { into, on, whenMatched, whenNotMatched } }
whenMatchedmerge(默认)/ replace / keepExisting / fail
优势可反复运行的增量汇总,不必清空目标集合

示例

示例
db.orders.aggregate([
  { $group: { _id: "$sku", qty: { $sum: "$qty" } } },
  { $merge: { into: "sku_stats", on: "_id", whenMatched: "merge", whenNotMatched: "insert" } }
])
into 可以写成 { db, coll } 指定其他数据库的集合(同实例内)。

易错点

  • on 字段需要唯一性保证,否则匹配语义可能不符合预期;目标集合上唯一索引可以兜底

数据来源与参考

  • MongoDB Manual: $merge
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌