それはすべての実用的な目的のためにユニークです。言及されている非一意性は、かなり理論的なものです。
から- タイムスタンプ(エポックからの秒数)
- マシン識別子
- プロセスID
- およびランダムな値で始まる3バイトのカウンター毎秒
したがって、中央値では、クライアントごとに1秒あたり3080を超えるドキュメントを書き込まない限り、保存する必要があります。_id
固有の制約があります: if 同じObjectIdを2回書き込もうとすると、例外が発生します。
補足:MD5や(程度は少ないですが)SHA256のようなハッシュアルゴリズムでさえ、衝突の可能性がわずかにあります。しかし、独自の制約があるため、安全です。
編集 :2つの同一のObjectIdが生成されて同時に書き込まれるという非常にまれなケースで例外がスローされるため、新しいObjectIdを生成してそれらを処理し、ドキュメントを再度保存しようとします。