2016-10-26 9 views
0

私は登録システムを書いています。そして、デバイスの能力によって、ユーザIDのために16バイトを持つという要件があります。また、私は、mongoが挿入されたオブジェクトごとにObjectIDを作成することを知っています。少なくとも、コレクション内では一意です。このIDは12バイトです。私は疑問に思っていた - それは16バイトのIDを生成するようにmongoのどこかの設定を変更することは可能ですか?私は、4バイトのゼロバイトで12バイトのIDをパディングすることを考えました。それは解決策ですが、それは無理です。より良い方法がありますか?mongodb IDの方針を変更してください。

+0

まず、これらのIDを挿入するようにアプリケーションを変更することができますが、objectIdヘルパーを自分の – Sammaye

答えて

1

ObjectIDの形式を変更するためのサーバー側の設定はありませんが、アプリケーション内に自分自身が望むものを何でも提供することができます。インサートの場合、ドライバーはインサート時にローカルでは_idをローカルで作成します。サーバーはupsert操作のためにのみサーバーを生成します。

upsertに依存しない限り、自分で_id個のフィールドを生成することをお勧めします。 16バイトの場合は、たとえば、UUIDジェネレータを使用できます。

+0

に置き換えるコンソール用の.mongorcを作成することもできます。どのように '_id'をモンゴー? '_ *'フィールドは内部のmongodbの使用のためだけに予約されていると思いました。または、フィールド '_id'を指定して標準挿入プロシージャを実行する必要がありますか? –

+0

他のフィールドと同様に_idを追加できます。 – xdg

関連する問題