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() 来查看新集合中的数据。请注意,这个新集合现在作为独立的物理实体存储在你的数据库中,不受原始集合后续更改的影响。