MongoDB 简明教程

MongoDB $out

1. $out 阶段简介

$out 阶段负责将聚合管道最终生成的文档写入一个指定的集合。你可以利用此阶段将复杂的分析结果持久化保存,以便后续直接查询使用。

2. 操作规则与限制

在使用 $out 时,你需要遵循以下核心规则:

  • 末端位置:该阶段必须位于聚合管道的最末尾。
  • 集合覆盖:如果输出集合已经存在,$out 将会用新的结果集原子性地替换掉整个现有集合。
  • 自动创建:如果输出集合尚不存在,MongoDB 会在执行时自动为你创建它。

3. 语法示例

其基础语法非常简单,仅需提供目标集合的名称字符串:

{ $out: "outputCollectionName" }

4. 完整实战案例

在本示例中,我们将使用 "sample_airbnb" 数据库。我们会筛选出物业类型为 "House" 的列表,并在处理完成后将结果导出到一个名为 houses_collection 的新集合中。

示例代码

db.listingsAndReviews.aggregate([
  // 阶段 1:筛选物业类型为 "House"
  { $match: { property_type: "House" } },
  // 阶段 2:仅保留特定字段
  { $project: { "name": 1, "property_type": 1, "price": 1 } },
  // 阶段 3:将结果输出到新集合
  { $out: "houses_collection" }
])

验证结果:
执行上述代码后,你可以通过运行 db.houses_collection.find() 来查看新集合中的数据。请注意,这个新集合现在作为独立的物理实体存储在你的数据库中,不受原始集合后续更改的影响。