定義
db.collection.drop(<options>)MongoDB とドライバー
このページでは
mongoshメソッドがドキュメントされています。 MongoDB ドライバーで同等のメソッドを確認するには、プログラミング言語の対応するページを参照してください。データベースからコレクションまたはビューを削除します。 このメソッドでは、削除対象のコレクションに関連付けられているインデックスも削除されます。 このメソッドは
dropコマンドのラッパーを提供します。次の値を返します。 trueコレクションが正常に削除された場合。false削除するコレクションが存在しない場合。
注意
シャーディングされたクラスターで実行すると、 db.collection.drop() では常に true が返されます。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
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 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()
書込み保証 w: 1 を使用したコレクションの削除
db.collection.drop() オプションドキュメントを受け入れます。
次の操作は、現在のデータベース内のstudentsコレクションを削除します。この操作では、 1件の書込み保証を使用します。
db.students.drop( { writeConcern: { w: 1 } } )