如何在MongoDB中拼接嵌套JSON内字符串与外层其他字符串
MongoDB 单文档内数组元素与外层字段拼接方案
核心实现思路
不需要$group分组操作,直接使用$map遍历数组+$concat字符串拼接即可完成单文档内的字段转换。
示例原始文档结构
{ "_id": ObjectId("65001acb2f4a89f1a7d3c0e1"), "acronym": "MC", "tickers": [ {"name": "标的1", "symbol": "s1f"}, {"name": "标的2", "symbol": "s1b"} ] }
聚合查询语句
db.你的集合名.aggregate([ { $addFields: { // 自定义输出的数组字段名,这里用result result: { $map: { input: "$tickers", // 指定要遍历的数组 as: "item", // 定义遍历到的单个元素的变量名 in: { // 拼接规则:symbol + 点 + 外层acronym $concat: ["$$item.symbol", ".", "$acronym"] } } } } }, // 可选:如果只需要返回结果数组,不需要其他原始字段,加下面的投影 { $project: { _id: 0, result: 1 } } ])
输出结果示例
{ "result": ["s1f.MC", "s1b.MC"] }
关键说明
- 遍历数组元素时,自定义变量需要加两个
$前缀(比如上面的$$item),外层文档字段直接用单个$前缀即可 - 该方案仅对单文档内的字段做转换,性能远高于跨文档的分组操作
内容的提问来源于stack exchange,提问作者ignareyesa
相关产品推荐
相关产品推荐

