MongoDBでデータを削除して領域を解放する方法
MongoDBでデータを削除して領域を解放するには、db.collection.remove() または db.collection.deleteMany() 関数を使用します。この関数を使用して 1 つまたは複数のドキュメントを削除し、削除した領域をデータベースに解放します。
例えば、usersというコレクションから”John”という名前のドキュメントをすべて削除するには、次のようなコマンドを使用します。
db.users.remove({name: "John"})
deleteMany() 関数を利用すれば、複数のドキュメントを一括して削除できます。その際には、削除条件を指定します。
db.users.deleteMany({age: {$gt: 30}})
ドキュメントを削除した後、MongoDB は、削除された領域のスペースを自動的に回収し、新しいデータの保存に使用します。ただし、MongoDB のストレージエンジン(WiredTiger など)はディスク領域を管理するため、すべての領域がすぐに解放されるわけではありません。実際の領域の回収はバックグラウンドで行われ、ストレージエンジンの構成とパフォーマンスなどの複数の要因によって左右されます。
手動で強制的に領域解放が必要な場合は、compact コマンドを使用できます。
db.runCommand({compact: 'users'})
MongoDBはコレクション内の削除済みスペースを再利用しようとしますが、スペースを再利用することはリソースを大量に消費する操作であるため、パフォーマンスに多少影響が出る可能性があることに注意してください。そのため、必要な場合にのみ実行することをお勧めします。