db.collection.drop()
MongoDB とドライバー
このページでは、 mongosh
メソッドについて説明します。MongoDB ドライバーで同等のメソッドを確認するには、ご使用のプログラミング言語の対応するページを参照してください。
定義
db.collection.drop(<options>)
データベースからコレクションまたはビューを削除します。 このメソッドでは、削除対象のコレクションに関連付けられているインデックスも削除されます。 このメソッドは
drop
コマンドのラッパーを提供します。次の値を返します。 true
注意
指定されたコレクションが存在しない場合でも、 db.collection.drop()
はtrue
を返します。
互換性
次の環境でホストされる配置には db.collection.drop()
を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
drop()
メソッドの形式は次のとおりです。
db.collection.drop( { writeConcern: <document> } )
drop()
メソッドは、次のフィールドを持つ任意のドキュメントを受け取ります。
フィールド | 説明 |
---|---|
writeConcern | 任意。 操作の 書込み保証( シャーディングされたクラスターで発行すると、 |
動作
db.collection.drop()
メソッドとdrop
コマンドは、削除されたコレクションで開かれている、すべての Change Streams に対して無効化を作成します。db.collection.drop()
メソッドとdrop
コマンドは、コレクションを削除する前に、ターゲット コレクションで進行中のインデックス構築を中止します。レプリカセットまたはシャーディングされたレプリカセットの場合、プライマリでインデックスを中止しても、セカンダリでのインデックス構築は同時に中止されません。MongoDB は、指定されたインデックスの進行中の構築をプライマリで中止しようとし、成功した場合には関連する
abort
の oplog エントリを作成します。進行中の構築が複製されたセカンダリ ノードは、インデックス構築をコミットまたは中止する前に、プライマリからのコミットまたは中止の oplog エントリを待ちます。コレクションを削除すると、それに関連付けられたゾーンやタグの範囲も削除されます。
MongoDB 5.0 以降では、管理データベースまたはコンフィギュレーションデータベース内のコレクションを
mongos
から削除しようとすると、drop
コマンドとdb.collection.drop()
メソッドによってエラーが返されます。これらのコレクションを削除するには、コンフィギュレーションサーバーに接続して、コマンドを実行します。MongoDB 6.0 以降では、
db.collection.drop()
メソッドにより、指定されたコレクションと暗号化されたフィールドに関連するあらゆる内部コレクションが削除されます。警告
db.collection.drop()
メソッドの動作は、ドライバーのdrop
メソッドの動作と異なります。指定されたコレクションと暗号化されたフィールドに関連する内部コレクションの両方を削除するには、ドライバーの接続で自動暗号化が有効になっている必要があります。指定されたコレクションと暗号化されたフィールドに関連する内部コレクションの両方がmongosh
により必ず削除されます。
シャーディングされたクラスターで削除されたコレクション名の再利用
シャーディングされたクラスターで、MongoDB 5.0 より前に削除されたコレクションと同じ名前のコレクションを作成すると、 mongos
によって誤ったシャードに操作が転送される場合があります。この状況を回避するには、次のとおりバージョン固有の手順を使用します。
MongoDB 5.0 以降を実行中のシャーディングされたクラスターでは、特別なアクションは必要ありません。drop()
メソッドを使用して、同じ名前の新しいコレクションを作成します。
シャーディングされたクラスターの場合、 drop()
メソッドを使用して同じ名前の新しいコレクションを作成する場合は、次のいずれかを行う必要があります。
flushRouterConfig
を使用して、全てのmongos
にキャッシュされたルーティング テーブルをフラッシュします。既存のドキュメントを削除し、コレクションを再利用するには、
db.collection.remove()
を使用します。
シャーディングされたコレクションをdb.collection.remove()
で削除するよりも高速であるため、キャッシュされたルーティングテーブルをフラッシュすることをお勧めします。キャッシュのフラッシュを避けたい場合にのみ、 remove()
アプローチを使用します。
リソースのロック
db.collection.drop()
は、操作中、指定されたコレクションに対する排他ロックを取得します。 コレクションに対する後続のすべての操作は、 db.collection.drop()
がロックを解放するまで待機する必要があります。
例
デフォルトの書込み保証を使用したコレクションの削除
次の操作は、現在のデータベース内のstudents
コレクションを削除します。
db.students.drop()
書込み保証 (writew: 1
concern) を使用してコレクションを削除
db.collection.drop()
オプションドキュメントを受け入れます。
次の操作は、現在のデータベース内のstudents
コレクションを削除します。この操作では、 1
件の書込み保証を使用します。
db.students.drop( { writeConcern: { w: 1 } } )