2

MongoDb では、ObjectId は 12 バイトの BSON タイプです。

objectID のサイズを小さくする方法はありますか?

4

2 に答える 2

2

いいえ、BSON データ型です。それは、32 ビット整数に自分自身を縮小するように要求するようなものです。すべてのオブジェクトには_idプロパティが必要ですが、これに限定されませんObjectId

于 2013-04-07T17:33:37.557 に答える
0

MongoDB コレクション内のすべてのドキュメントは一意である必要_idがありますが、値はObjectId. したがって、コレクション内のドキュメントのサイズを縮小する場合は、次の 2 つの選択肢があります。

  1. ドキュメントの固有のプロパティの 1 つを選択し、それを_idフィールドとして使用します。たとえば、外部から提供されたアカウント ID がデータ モデルの一部であるアカウント コレクションがある場合、アカウント ID を_idフィールドに格納できます。

  2. コレクションの主キーを自分で管理します。多くのドライバーは、カスタムの主キー ファクトリをサポートしています。@assylias が示唆するように、int を使用するとスペースを大幅に節約できますが、モデル内のフィールドの 1 つを として使用できる場合よりも多くのスペースを使用します_id

ところで、_idフィールドの値は複合にすることができます。オブジェクト/ハッシュ/マップ/辞書を使用できます。たとえば、この SO questionを参照してください。

Mongo の上である種のオブジェクト/モデル フレームワークを使用している場合は、(1) に注意する必要があります。一部のフレームワークでは、開発者が ID 生成をオーバーライドするのに苦労しています。たとえば、私は Ruby の Mongoid で悪い経験をしました。その場合、生成はドライバー層で行われるため、(2) の方が安全な方法かもしれません。

于 2013-04-08T02:21:45.637 に答える