コレクション内のドキュメントの数を取得するには、db.collection.find({}).count()
を使用します 。
ただし、実行しようとしていることは機能しません。データベースへの並列アクセスが多い場合、複数のスレッドが同時にこれを実行し、同じカウントを受け取り、同じIDのドキュメントを挿入する可能性があります。 CAP定理 によると 、MongoDBのような分散データベースはこの種の一貫性を提供できません。
代わりにすべきことは、MongoDB ObjectId
に依存することです。 ドキュメントの一意の識別子としての。 _id
に独自の値を指定しない場合、MongoDBはドキュメントごとにこれらを自動的に生成します 。 ObjectIdはグローバルに一意であるため(実用的な目的には十分に一意です)、衝突は発生しません。また、タイムスタンプで始まるため、_id
で注文すると おおよそ時系列の順序になります(前述のように、厳密 分散システムでは時系列の順序を提供することはできません。
経験則として、AUTO_INCREMENT
を使用する場合は常に SQLでは、MongodDBでObjectIdを使用する可能性があります。