2011-12-02 10 views
1

私はユーザコレクションを持っていますが、明らかにすべてのログインは一意です。この時点では、デフォルトで生成されたMongoIdの代わりにそれらを使用しない理由は考えられません。このアプローチには欠点がありますか?MongoIdの代わりに一意の文字列を_idとして使用することには何らかの弱点がありますか?

+0

すべてのログインが一意なのはなぜですか?しかし – hakre

答えて

1

うん、それは完全にokと聞こえます。 ObjectIdsはシャーディングを行うときに便利で、組み込みのタイムスタンプを提供することができます。インデックスは、すべて同じサイズであるため、インデックス作成、ストレージの方が効率的です。しかし、あなたのアプリケーションがloginを使うのがより理にかなっているなら、うまくいくはずです。

+0

タイムスタンプの解像度は秒単位であることに注意してください。より高い解像度が必要な場合は、別のフィールドを使用する必要があります。 – christkv

0

ログイン情報がメールアドレスでもある場合は、ある時点でユーザーがメールアドレスを変更するため、_idとして使用すると問題が発生します。ログインに電子メールアドレスを使用しない場合でも、ユーザーがユーザー名を変更できるようにすることができます。

_idとしてログインを使用することには不利な点はありませんが、私は質問します。標準のObjectIdフィールドを使用するだけの欠点はありますか?代わりにログインを使用して得たいものは何ですか?

タイラーBrock氏が答えて指摘したように、ObjectIdを使用すると、文書を作成したMongoDBのインスタンスのタイムスタンプと識別子など、ObjectIdにエンコードされた追加情報がいくつか追加されます。いつか役に立つかもしれない。

私の経験では、場合によっては、時にはの場合は本当に良い理由がありますが、使用している技術の流れに合わせるのが普通です。

関連する問題