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