sql >> データベース >  >> NoSQL >> MongoDB

Mongodb ObjectIDはドキュメント間で一意ですか?

    それはすべての実用的な目的のためにユニークです。言及されている非一意性は、かなり理論的なものです。

    ObjectIdが構築されます

    から
    • タイムスタンプ(エポックからの秒数)
    • マシン識別子
    • プロセスID
    • およびランダムな値で始まる3バイトのカウンター毎秒

    したがって、中央値では、クライアントごとに1秒あたり3080を超えるドキュメントを書き込まない限り、保存する必要があります。_id 固有の制約があります: if 同じObjectIdを2回書き込もうとすると、例外が発生します。

    補足:MD5や(程度は少ないですが)SHA256のようなハッシュアルゴリズムでさえ、衝突の可能性がわずかにあります。しかし、独自の制約があるため、安全です。

    編集 :2つの同一のObjectIdが生成されて同時に書き込まれるという非常にまれなケースで例外がスローされるため、新しいObjectIdを生成してそれらを処理し、ドキュメントを再度保存しようとします。



    1. redisに保存できる最大値のサイズはどれくらいですか?

    2. 異なる値で複数のドキュメントを更新する方法

    3. 配列更新演算子$[<identifier>]を使用した次のクエリに相当するMongoDBC#ドライバーは何でしょうか。

    4. マングースの特定の更新のためにタイムスタンプミドルウェアをスキップする