$concatArrays(拼接数组)
最后更新:2026-10-09
$concatArrays(拼接数组)
$concatArrays 把多个数组合并成一个数组,不去重,是数组操作表达式,常用于 $project 与 $addFields;从 MongoDB 8.1 起也可作为 $group 的累加器使用,把组内多条文档的数组字段拼接起来。与 $setUnion 不同,它保留重复元素。
| 分类 | 累加器 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $concatArrays: [ <数组1>, <数组2>, ... ] }
返回值:所有输入数组拼接后的新数组(不去重)
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $concatArrays:在 $project 中拼接标签数组
db.products.aggregate([
{ $project: { allTags: { $concatArrays: ['$tags', ['hot']] } } }
])
运行结果:
{ "_id": 1, "allTags": ["a", "b", "hot"] }
📌 注意事项
- 不去重,保留所有元素
- 输入必须都是数组,否则报错
- MongoDB 8.1 起可作为 $group 累加器
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$concatArrays 会去重吗?
A不去重,需要去重用 $setUnion。
Q输入不是数组会怎样?
A报错,所有输入必须是数组;可用 $isArray 先检查。
Q能在 $group 里当累加器用吗?
AMongoDB 8.1 起可以,把组内文档的数组字段拼接起来。