You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询MongoDB文档并提取指定语言的本地化字段?

你的聚合管道是可行的

你提供的聚合管道完全能实现预期需求:

  1. 先用$match过滤出key=123的目标文档
  2. 通过$replaceRoot结合$mergeObjects,把原文档所有字段与translations.en内的字段合并到根层级
  3. 最后用$project移除不需要的translations字段
    执行后会得到你想要的文档结构。
更简洁的实现方式

可以用$set+$unset的组合简化管道,步骤更少且逻辑更直观:

db.characters.aggregate([
    { $match: { "key": 123 } },
    { $set: "$translations.en" },
    { $unset: "translations" }
])
  • $set会直接将translations.en里的所有字段(比如name、description)展开到根文档层级
  • 再用$unset移除冗余的translations字段,一步到位得到目标结构

如果你的MongoDB版本是4.2及以上,还可以用$replaceWith进一步压缩成两步:

db.characters.aggregate([
    { $match: { "key": 123 } },
    {
        $replaceWith: {
            $mergeObjects: [
                { $unset: ["$$ROOT.translations"] },
                "$translations.en"
            ]
        }
    }
])

$replaceWith是$replaceRoot的简化语法,这里先通过$unset移除原文档的translations字段,再和指定语言的翻译字段合并,直接生成新的根文档。

内容的提问来源于stack exchange,提问作者Justin Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:03:18