我正在尝试在MongoDB中设计一个模式范例,它支持文档中变量属性的多语言值。
例如,我会有一个产品目录,其中每个产品可能要求以各种语言存储其名称,标题或任何其他属性。 同样的范例应该适用于其他特定于语言环境的属性,例如价格/货币变化
我一直在考虑一种键值方法,其中key是语言代码,value是相应的值:
{
sku: "1011",
name: { "en": "cheese", "de": "Käse", "es": "queso", etc... },
price: { "usd": 30.95, "eur": 20, "aud": 40, etc... }
}
问题是我相信这会让我无法在多语言领域使用索引。 最后,我想要一个通用但直观,可索引的设计。
任何建议都将不胜感激,谢谢。
答案 0 :(得分:6)
对您的架构设计的批评建议可能有点广泛讨论这里的主题。但是,我可以建议您考虑将显示的元素放入子文档的 Array 中,而不是将每个项目的字段放在单个子文档中。
{
sku: "1011",
name: [{ "en": "cheese" }, {"de": "Käse"}, {"es": "queso"}, etc... ],
price: [{ "usd": 30.95 }, { "eur": 20 }, { "aud": 40 }, etc... ]
}
这样做的主要原因是要考虑元素的访问路径,这样可以更容易查询。我详细介绍了here,这可能值得你阅读。
也可以扩展名称字段之类的内容:
name: [
{ "lang": "en", "value": "cheese" },
{ "lang": "de", "value: "Käse" },
{ "lang": "es", "value": "queso" },
etc...
]
所有这些都取决于您的索引和访问要求。这一切都取决于您的应用程序究竟需要什么,而MongoDB的优点在于它允许您根据需要构建文档。
P.S至于你存储 Money 值的任何内容,我建议你做一些阅读,也许可以在这里发帖: