如何用MongoDB聚合框架将子文档转换为字符串格式?
可以通过MongoDB聚合框架实现该需求
你完全可以仅用聚合框架完成子文档到指定格式字符串的转换,不需要额外工具。以下是针对你需求的具体聚合管道:
db.collection.aggregate([ { $addFields: { metaData_string: { $concat: [ "{\n", { $join: [ { $map: { input: { $objectToArray: "$metaData" }, as: "item", in: { $concat: ["'", "$$item.k", "': '", "$$item.v", "'"] } } }, ",\n" ] }, "\n}" ] } } }, { $project: { metaData: 0 // 可选:移除原metaData字段 } } ])
步骤说明:
- $objectToArray:将
metaData子文档转换成键值对数组,比如{name: "test", family: "test"}会变成[{k: "name", v: "test"}, {k: "family", v: "test"}] - $map:遍历这个数组,把每个键值对拼接成
'key': 'value'的字符串格式 - $join:用
",\n"把所有拼接好的字符串连接起来,形成字段行的组合 - $concat:在前后分别加上
{\n和\n},最终得到你需要的带换行和单引号的JSON格式字符串 - $project:可选步骤,用来移除原有的
metaData字段,只保留转换后的字符串字段
执行这个管道后,输出的文档结构会和你给出的示例一致,每个文档保留id、letterNo、letterDate字段,并新增格式符合要求的metaData_string字段。
内容的提问来源于stack exchange,提问作者Majid soorani
相关产品推荐
相关产品推荐

