gpt4 book ai didi

mongodb - 我如何在 mongodb 的模式中使用翻译后的字符串?

转载 作者:可可西里 更新时间:2023-11-01 10:04:42 25 4
gpt4 key购买 nike

我正在为 MongoDB 设计架构并有一个问题。这是我需要保存的文档示例:

Product {
"_id" : ObjectID("..."),
"name" : "MyProduct",
"category" : {Catid:ObjectID(".."), name: "Eletronic"}

}

这个“类别”指的是另一个包含所有类别的集合...我将“名称”保存在产品中,因为当我找到产品时需要类别的名称..

但是这个分类的名字需要翻译..

我如何设计这个??

最佳答案

我建议将类别(或多个类别)存储为产品中的标识符,而不是进行非规范化。由于您通常会有一个应用程序/中间层/Web 服务器对 MongoDB 进行查询,因此为类别及其在内存中的翻译应用一个简单的缓存层是合理的(您甚至不需要缓存它们很长,如果这很重要的话)。

Product {
"_id" : ObjectID("..."),
"name" : "MyProduct",
"category" : ObjectID("..")
}

Category {
"_id" : ObjectID("..."),
"en-us" : "cheese",
"de-de" : "Käse",
"es-mx" : "queso"
}

或者,可以使用更多结构存储类别以处理区域差异:

Category {
"_id" : ObjectID("..."),
"en" : { default: "cheese" }
"de-de" : { default: "käse", "at": "käse2" }
"es" : { default: "queso" }
}

如果您执行如下查询:

db.products.find({ price : { $gt: 50.00 }}) 

返回匹配列表,您可以从匹配的产品文档中收集所有类别,并使用 $in 快速获取当前语言环境的任何非缓存类别值。因此,您可以通过使用此技术进行查询来最大程度地减少额外往返数据库的次数。如果您要匹配大量类别,您可以考虑分批进行。

db.categories.find( { _id : { $in : [array_of_ids] } });

然后,将它们匹配在一起。

关于mongodb - 我如何在 mongodb 的模式中使用翻译后的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com