MongoDBドキュメントのフィールドIDまたは_IDを使用することに違いはありますか?
私は通常「_id」を使用するため、これを求めていますが、ドキュメントではこのソート({id:-1})を見ました: http://www.mongodb.org/display/DOCS/Optimizing+ Object + IDs#OptimizingObjectIDs-Sortbyidtosortbyinsertiontime
[〜#〜] edit [〜#〜]
ドキュメントが間違っていたことが判明しました。
私はそれがドキュメントの単なる誤植だと思っています。 _id
フィールドは、すべてのドキュメントの主キーです。それは呼ばれています _id
およびid
からもアクセスできます。 id
キーを使用しようとすると、illegal ObjectId format
エラー。
このセクションは、自動的に生成されたObjectIDがタイムスタンプで始まることを示しているだけなので、ドキュメントを自動的に並べ替えることができます。 _id
は、すべてのコレクションで自動的に索引付けされます。詳細については、 http://www.mongodb.org/display/DOCS/Object+IDs を参照してください。特に「BSON ObjectID Specification」の下。
BSON ObjectIDは、4バイトのタイムスタンプ(エポックからの秒数)、3バイトのマシンID、2バイトのプロセスID、および3バイトのカウンターで構成される12バイトの値です。タイムスタンプおよびカウンタフィールドは、BSONの他の部分とは異なり、ビッグエンディアンに保存する必要があることに注意してください。
_id
フィールドは、Bson ObjectIdのデフォルトフィールドであり、デフォルトでインデックスが作成されます。
_id
とidは同じではありません。必要に応じてid
というフィールドを追加することもできますが、インデックスを追加しない限り、インデックスにはなりません。
これはドキュメントの単なる誤植です。
idはmongoid.idの_idのエイリアスで、ドキュメントの_idを返します。 https://github.com/mongodb/mongoid/blob/master/lib/mongoid/fields.rb#L47
_idフィールドが指定されていない場合、ObjectedIdが自動的に生成されます。
私の2セント:
MongoDB
は_id
フィールドを各ドキュメントに割り当て、そのドキュメントにプライマリインデックスを割り当てます。セカンダリインデックスを適用する方法もあります。デフォルトでは、MongoDB
はObjectID
型の_id
フィールドの値を作成します。この値はBSON
仕様で定義されており、次のように構成されています。
ObjectID(12バイトの16進文字列)=日付(4バイト、Unixエポックからの秒数を表すタイムスタンプ値)+ MACアドレス(3バイト)+ PID(2バイト)+カウンター(3バイト)