複数の言語をサポートし、MongoDBデータストアを使用するWebサイトを構築したいとします。各言語に1つずつ、記事の本文とタイトルの複数のバージョンを作成するための良い方法は何でしょうか。
すべてのバージョンを同じ記事ドキュメントに保持する必要がありますか?記事の本文フィールドにある言語コードとテキストのキーと値のペアのコレクションのように。このようにして、記事を表示するためのリクエストを1つだけ取得しますが、必要以上のデータも取得するため、応答が大きくなります。
より良い解決策はありますか?方法と理由?
すべての言語でインデックスを作成する必要があるテキストに次のパターンを使用します。
{
"id":"sdsd"
"title":{"languages":{"en":0,"fr":1},"texts":["this is the title in inglish","Celui ci c'est le titre en francais"]}
}
object = coleccion.find("id='xxxxx'");
//ここで英語のテキストが必要な場合
print(object.title.texts[object.title.languages["en"]])
// objecttitle.languagesインデックス配列を使用して、決定されたテキストにアクセスするクライアントのパフォーマンスを向上させます
// mongoの翻訳済みテキストにインデックスを追加できます。
ensureIndex({title.texts})
また、コードをラップして、クラスの特定の言語でテキストを取得することもできます。
キーでインデックス化する必要があるキーと値に次のパターンを使用します。
{
"id":"ObjectId",
"key":"error1"
"values":[{
"lang":"en",
"value":"Error Message 1"
},
{
"lang":"fa",
"value":"متن خطای شماره 1"
}]
}
このコードをC#で使用する
object = coleccion.find({"key": "error1"});
このリンクを表示 埋め込みドキュメントとの1対多の関係をモデル化!
再共有 この投稿