首页/数据/NoSQL 速查/聚合 $out 覆盖输出集合
MongoDB99 条

聚合 $out 覆盖输出集合

$out 把管道结果写入集合:目标存在时整体替换(原子性切换),不存在则创建;必须作为管道最后阶段。

NoSQL 速查数据更新于 2026-10-12
语法{ $out: "集合名" } 或 { $out: { db, coll } }
语义先写临时集合,完成后原子替换目标
位置必须是最后阶段

示例

示例
db.orders.aggregate([
  { $match: { status: "paid" } },
  { $group: { _id: "$sku", total: { $sum: "$qty" } } },
  { $out: "sku_daily" }
])
$out 覆盖式语义适合“每日重算”的日报表;需要保留历史时改用 $merge。

易错点

  • $out 替换期间目标集合短暂“消失又出现”,对读取方透明但索引需要重建完成才可用

数据来源与参考

  • MongoDB Manual: $out
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌