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

MongoDBに自動インクリメントのプライマリIDをどのように実装しますか?

    MongoDBのfindAndModifyコマンドを使用する必要があります。これを使用すると、フィールドをアトミ​​ックに選択してインクリメントできます。

    db.seq.findAndModify({
      query: {"_id": "users"},
      update: {$inc: {"seq":1}},
      new: true
    });
    

    これにより、usersのカウンターがインクリメントされます コレクション。挿入する前にドキュメントに追加できます。アトミックであるため、競合状態によってIDが競合することを心配する必要はありません。

    MySQLのauto_incrementほどシームレスではありません フラグを立てますが、通常はMongoドライバーで独自のIDファクトリを指定するオプションもあるため、findAndModifyを使用してIDを透過的にインクリメントおよび返すファクトリを実装すると、MySQLのようなエクスペリエンスが大幅に向上します。

    このアプローチの欠点は、すべての挿入がシーケンスコレクションの書き込みロックに依存しているため、大量の書き込みを行うと、すぐにボトルネックになる可能性があることです。コレクション内のドキュメントが挿入順に並べ替えられることを保証したいだけの場合は、上限付きコレクションを確認してください。



    1. ファイルストレージとしてのMongoDB

    2. SQLでパーセンテージとして数値をフォーマットする

    3. MongoDBとDjangoで使用するPythonAPI

    4. mongodumpを使用してMongoDBデータベースをバックアップする