我正在使用sprint boot编写服务。对于持久层,我使用MongoDB。在我的服务中有一些i18n案例,但我不打算使用Mongoid。我应该像其他数据库一样设计表吗?或者是否有使用MongoDB进行i18n的最佳实践?谢谢!
答案 0 :(得分:0)
您可以将实际值放在文档内的数组中。这样的事情:
{
"_id" : "some id",
"defaultValue" : {
"_id" : "ENG",
"v" : "English Value"
},
"values" : [
{
"_id" : "ENG",
"v" : "English Value"
},
{
"_id" : "RUS",
"v" : "Russian Value"
}
]
}
获取值时,您可以使用文档ID和值id进行查询,以获得所需的语言值。如果不存在所需的语言,您可以获得默认值。
db.yourDocument.find({"_id": "document id", "values._id": "ENG"}, {"values.$": 1})
如果查询返回没有元素检查默认值:
db.yourDocument.find({"_id": "document id"}, {"defaultValue": 1})