1

次の 2 つのコレクションと次の注を検討してください。どちらがより適切だと思いますか?

// #1
{x:'a'}
{x:'b'}
{x:'c'}
{x:['d','e']}
{x:'f'}

.

//#2
{x:['a']}
{x:['b']}
{x:['c']}
{x:['d','e']}
{x:['f']}

いくつかの事実:

  • フィールドxには通常、値が 1 つ (95%) しかなく、それ以上 (5%) もあります。
  • Mongodb は、クエリ中に {x:['a']} のように {x:'a'} で動作します。
  • MongoVUE は #1 にスケーラー値を直接表示Array[0]し、#2 に表示します。
  • #1を使用して、新しい値を追加する場合は、データ型をキャストする必要があります
  • #1 一部の CRUD 操作では少し高速になる可能性があります (?)
4

2 に答える 2

1

@ZaidMasudのポイントを増幅するために、スカラーまたは配列を使用し、両方を混在させないことをお勧めします。両方を使用するやむを得ない理由がある場合 (レガシー データなど)、Mongo クエリが配列でどのように機能するかを十分に理解することをお勧めします。一見すると直感的ではありません。たとえば、このパズルを参照してください。

于 2013-02-10T01:59:17.507 に答える
0

スキーマ設計の観点からすると、MongoDB ではキーと値のペアに対してさまざまなデータ型を格納できますが、これは必ずしも良い考えではありません。異なるデータ型を使用するやむを得ない理由がない場合は、多くの場合、特定のキーと値のペアに対して同じデータ型を使用するのが最善です。

その理由を考えると、私は#2を好むでしょう。この場合、アプリケーション コードは通常より単純になります。さらに、 Aggregation Frameworkを使用する必要がある場合は、統一型を使用すると便利です。

于 2013-02-09T16:57:33.530 に答える