Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

db.コレクション.deleteOne()(mongoshメソッド)

MongoDB とドライバー

このページでは、 mongosh メソッドについて説明します。MongoDB ドライバーで同等のメソッドを確認するには、ご使用のプログラミング言語の対応するページを参照してください。

C#Java SyncNode.jsPyMongoC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala
db.collection.deleteOne()

コレクションから 1 つのドキュメントを削除します。

次の値を返します。次の要素を含むドキュメント:
  • acknowledgedtrue操作が 書込み保証( write concern )付きで実行された場合は としてブール値false (書込み保証が無効になっている場合は

  • deletedCount 削除されたドキュメントの数を含みます

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

deleteOne() メソッドの形式は次のとおりです。

db.collection.deleteOne(
<filter>,
{
writeConcern: <document>,
collation: <document>,
hint: <document|string>,
maxTimeMS: <int>,
let: <document>
}
)

deleteOne() メソッドは次のパラメーターを取ります。

Parameter
タイプ
説明

ドキュメント

クエリ述語を使用して削除条件を指定します。

コレクションで返される最初のドキュメントを削除するには、空のドキュメント{ }を指定します。

ドキュメント

任意。書込み保証(write concern)を表現するドキュメント。デフォルトの書込み保証を使用する場合は省略します。

トランザクションで実行される場合、操作の書込み保証 (write concern)を明示的に設定しないでください。トランザクションで書込み保証を使用するには、「トランザクション書込み保証」を参照してください。

ドキュメント

任意。

操作に使用する照合を指定します。

照合を指定すると、大文字・小文字やアクセント記号など、文字列を比較するための言語独自のルールを指定できます。

照合オプションの構文は次のとおりです。

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

照合を指定する場合、locale フィールドは必須ですが、その他の照合フィールドはすべて任意です。フィールドの説明については、照合ドキュメントを参照してください。

照合が指定されていなくても、コレクションにデフォルトの照合が設定されている場合(db.createCollection() を参照)には、コレクションの照合が使用されます。

コレクションにも操作にも照合が指定されていない場合、MongoDB では以前のバージョンで使用されていた単純なバイナリ比較によって文字列が比較されます。

1 つの操作に複数の照合は指定できません。たとえば、フィールドごとに異なる照合を指定できません。また、ソートと検索を一度に実行する場合、検索とソートで別の照合を使用できません。

ドキュメント

任意。 クエリ述語をサポートするために使用するインデックスを指定するドキュメントまたは string です。

このオプションには、インデックス仕様ドキュメントまたはインデックス名の文字列を指定できます。

存在しないインデックスを指定した場合、操作はエラーになります。

の例については、「 hint削除操作での の指定 」を参照してください。

integer

任意。タイムアウトする前に削除する操作を実行する時間制限をミリ秒単位で指定します。

ドキュメント

任意。

変数のリストを含むドキュメントを指定します。これにより、変数をクエリテキストから分離することで、コマンドの読みやすさを向上させることができます。

ドキュメントの構文は次のとおりです。

{
<variable_name_1>: <expression_1>,
...,
<variable_name_n>: <expression_n>
}

変数は式によって返された値に設定され、その後は変更できません。

コマンド内の変数の値にアクセスするには、二重ドル記号の接頭辞($$)を $$<variable_name> 形式にした変数名とともに使用します。たとえば次のとおりです。$$targetTotal

結果のフィルタリングに変数を使用するには、$expr 演算子内の変数にアクセスする必要があります。

letと変数を使用した例については、let 変数を使用した更新を参照してください。

db.collection.deleteOne()はフィルターに一致する最初のドキュメントを削除します。 正確な削除を行うには、 _idなどの一意のインデックスの構成フィールドを使用します。

シャーディングされたコレクションでdb.collection.deleteOne()を使用するには、次の手順に従います。

  • 1 つのシャードのみをターゲットにする場合は、クエリ仕様で部分的なシャードキーを使用できます。

  • クエリ仕様でシャードキーまたは _idフィールドを指定する必要はありません。deleteOne() は本質的に 1 の制限を使用するためです。

db.collection.deleteOne()分散トランザクション内で使用できます。

トランザクションで実行される場合、操作の書込み保証 (write concern)を明示的に設定しないでください。トランザクションで書込み保証を使用するには、「トランザクション書込み保証」を参照してください。

重要

ほとんどの場合、分散トランザクションでは 1 つのドキュメントの書き込み (write) よりもパフォーマンス コストが高くなります。分散トランザクションの可用性は、効果的なスキーマ設計の代わりにはなりません。多くのシナリオにおいて、非正規化されたデータモデル(埋め込みドキュメントと配列)が引き続きデータやユースケースに最適です。つまり、多くのシナリオにおいて、データを適切にモデリングすることで、分散トランザクションの必要性を最小限に抑えることができます。

トランザクションの使用に関するその他の考慮事項(ランタイム制限や oplog サイズ制限など)については、「本番環境での考慮事項」も参照してください。

db.collection.deleteOne()操作によってドキュメントが正常に削除されると、その操作によってoplog (操作ログ)にエントリが追加されます。 操作が失敗した場合、または削除するドキュメントが見つからなかった場合は、その操作によって oplog にエントリが追加されることはありません。

このページの例では、sample_mflixサンプルデータセットのデータを使用します。このデータセットを自己管理型MongoDB配置にロードする方法の詳細については、サンプルデータセットをロードする を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。

次の操作では、year1910 より前の最初のドキュメントが削除されます。

db.movies.deleteOne( { year: { $lt: 1910 } } )
{ acknowledged: true, deletedCount: 1 }

次の操作では、yearcutoffYear 変数よりも前の最初のドキュメントを削除し、時間制限を 3 秒に設定します。

db.movies.deleteOne(
{ $expr: { $lt: ["$year", "$$cutoffYear"] } },
{
let: { cutoffYear: 1910 },
maxTimeMS: 3000
}
)
{ acknowledged: true, deletedCount: 1 }

3つのノードから成るレプリカセットにおいて、次の操作は wmajoritywtimeout100 を指定します。

db.movies.deleteOne(
{ title: "A Corner in Wheat" },
{ writeConcern: { w: "majority", wtimeout: 100 } }
)
{ acknowledged: true, deletedCount: 1 }

照合を指定すると、大文字・小文字やアクセント記号など、文字列を比較するための言語独自のルールを指定できます。

次の操作では、英語のロケールとstrength: 2 とともに照合オプションを使用するため、比較では大文字と小文字が区別されません。フィルターtitle: "the dark knight" "The Dark Knight"は、コレクション内のタイトルが のドキュメントと一致します。

db.movies.deleteOne(
{ title: "the dark knight" },
{ collation: { locale: "en", strength: 2 } }
)
{ acknowledged: true, deletedCount: 1 }

rated フィールドと metacritic フィールドにインデックスを作成します。

db.movies.createIndex( { rated: 1 } )
db.movies.createIndex( { metacritic: 1 } )

次の削除操作は、インデックス { rated: 1 } を使用することを明示的に指定します。

db.movies.deleteOne(
{ metacritic: { $lte: 15 }, rated: "PG" },
{ hint: { rated: 1 } }
)
{ acknowledged: true, deletedCount: 1 }

注意

存在しないインデックスを指定した場合、操作はエラーになります。

使用されているインデックスを表示するには、$indexStats パイプラインを使用できます。

db.movies.aggregate( [ { $indexStats: { } }, { $sort: { name: 1 } } ] )

$indexStats 出力の accesses.ops フィールドには、インデックスを使用した操作の数が表示されます。

Tip

複数のドキュメントを削除するには、 db.collection.deleteMany()

戻る

db.collection.deleteMany

項目一覧