1

私は現在、今後の製品の 1 つが mongo で開発されることに価値があるかどうかのチェックを担当しています。

あまり詳細には触れずに、このアプリが何をするのかを説明しようと思います。

アプリには単に「エンティティ」があります。これらのエンティティは、携帯電話、テレビ、ラップトップ、タブレット PC などの技術的なものです。

もちろん、携帯電話にはタブレット PC 以外の属性があり、ラップトップには RAM、CPU、ディスプレイ サイズなどの属性もあります。

ここで、スキームと呼びたいものを用意したいと思います: ディスプレイ サイズ、フラッシュ デバイスの RAM サイズの量、プロセッサの種類、プロセッサの速度などをタブレット pc 用に保存する必要があると定義します。携帯電話の場合、ディスプレイ サイズ、GSM、Edge、3g、4g、プロセッサ、RAM、タッチ スクリーン技術、bla bla bla を節約できます。私はあなたがそれを得たと思います:)

私が実現したいのは、各「カテゴリ」にはスキーマがあり、システムのユーザーの 1 人が新製品 (新しい iphone 4 としましょう) を入力すると、アプリは適切な属性を入力するフォームを作成することです。

これまでのところ、いい音で、mongo で問題になることはありません。しかし今、私はきれいな解決策を見つけることができなかったタフな....

mongo でモデル化された属性は次のようになります。

{
_id: 1234456, name: "Attribute name", type: 0, "description"
}

しかし、次のような複数の言語でこの属性が必要な場合はどうすればよいですか。

{
en: {name: "Attribute name", type: 0, "description"},
de: {name: "Name des Attributs, type: 0, "Beschreibung"}
}

また、たとえばタイプが 0 から 1 に変更された場合など、英語が更新されるとすぐにドイツ語の属性が更新されるようにする必要もあります。

それに関するアイデアはありますか?

4

3 に答える 3

0

mongo データベース内のドキュメントは、その属性の一部またはすべてを 1 つのupdateステートメントで更新できます。トリガーはありません。type 属性が変更されたときにドキュメントを更新する場合は、アプリケーション ロジックでそれを行う必要があります。

于 2012-03-30T13:43:14.850 に答える
0

これは、さまざまな方法で解決できます。

属性ドキュメントに言語翻訳の配列を埋め込むことができます。

{
    _id: 1234, 
    type: 0,
    somethingElse : "foobar",
    translation: [
        "en" : { name: "Attribute name", description : "Description" }
        "de" : { name: "Name des Attributs", description: "Beschreibung" }
    ]
}

または、翻訳キーとそのキーのすべての言語の翻訳を保存できる別のコレクションに翻訳を分離することもできます。

または、モデルを使用して、1 回の更新で複数の属性を更新することもできます。

それはすべてあなたの好みに依存します。

于 2012-03-30T14:27:55.160 に答える
0

MongoDB では、ドキュメント内またはドキュメント間の論理関係 (たとえば、すべての説明をこれら 5 つの言語で表示する必要がある) を保証するタスクは、クライアント プログラムの責任です。仕様を満たす、または仕様を満たさないドキュメントを検索するためのクエリがありますが、データベース自体は、仕様を満たさないドキュメントの格納を妨げません (一意のインデックスなどの特殊なケースを除く)。

リレーショナル データベースに対する MongoDB の利点は、ニーズの変化に応じてスキーマを拡張できることです。パフォーマンスの観点からは、($set または $push または別の更新機能を使用して) ドキュメント全体をラウンドトリップせずにデータベースに更新をプッシュする機能が役立つ可能性があり、さまざまな複合フィールドで柔軟にインデックスを作成する機能により、クエリが高速になる可能性があります.

あなたのユースケースを理解すれば、データの総量は比較的少なく(数千のドキュメント、それぞれが数KB以下)、適度なシステムのRAMに収まり、高速になります。ただし、クライアント側のロジックを記述して、必要な構造と関係を強制します。

于 2012-03-31T11:25:32.497 に答える