对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

$concatArrays(窗口函数)

$concatArrays

返回窗口中文档的合并大量值的大量。

注意

消歧

本页介绍了用作窗口函数的 $concatArrays。

您还可以在其他上下文中使用 $concatArrays:

{
$setWindowFields: {
...
output: {
<field>: {
$concatArrays: "<array field>"
}
}
}
}

为 null 或解析为 null 的参数包含在结果中。结果不包含引用缺失字段的参数。

以下示例使用 sample_mflix 示例数据集中的 movies 集合。有关如何将此数据集加载到部署中的详细信息,请参阅 加载示例数据集。

该示例使用 $setWindowFields 按发布年份对电影进行分区,并连接每个分区内的 genres 数组,并按标题排序。每个文档接收 genres 数组的串联,从其分区中的第一部电影到当前文档:

db.movies.aggregate( [
{ $match: { year: { $in: [1914, 1915] } } },
{ $setWindowFields: {
partitionBy: { year: "$year" },
sortBy: { title: 1 },
output: {
combinedGenres: {
$concatArrays: "$genres",
window: { documents: ["unbounded", "current"] }
}
}
} },
{ $project: { _id: 0, year: 1, title: 1, combinedGenres: 1 } }
] )

上述管道:

  • 使用 $setWindowFields 通过 year 和 partitionBy 对电影进行分区,并按 title 对每个分区进行排序。该阶段在[ "unbounded", "current" ] 的文档窗口上将 $concatArrays 应用于 genres字段。 combinedGenres字段保存从分区中的第一部电影到当前文档的连接类型。

  • 使用 $project 在输出中包含 year、title 和 combinedGenres。

随着每个文档贡献其 genres大量,combinedGenres大量在每个分区内增长。

给本页内容打分