AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

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

重要

非推奨の mongosh メソッド

This method is deprecated in mongosh. For alternative methods, see Compatibility Changes with Legacy mongo Shell.

db.collection.remove()

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

次の値を返します。

操作のステータスを含むWriteResultオブジェクト。

db.collection.remove() 次の 2 つの構文形式のいずれかを持つことができます。remove() は、クエリ ドキュメントと任意の justOne ブール値を受け入れることができます。

db.collection.remove(
<query>,
<justOne>
)

または、このメソッドはクエリ ドキュメントと任意の削除オプション ドキュメントを受け入れることができます。

バージョン5.0で変更。

db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)

db.collection.remove() は以下のパラメーターを取ります。

Parameter
タイプ
説明

query

ドキュメント

クエリ演算子を使用して削除条件を指定します。コレクション内のすべてのドキュメントを削除するには、空のドキュメント({})を渡します。

justOne

ブール値

任意。削除を 1 つのドキュメントのみに制限するには、true に設定します。省略するとデフォルト値の false が使用され、削除条件に一致するすべてのドキュメントが削除されます。

writeConcern

ドキュメント

Optional. A document expressing the write concern. Omit to use the default write concern. See Write Concern.

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

collation

ドキュメント

任意。

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

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

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

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

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

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

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

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

ドキュメント

任意。

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

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

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

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

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

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

For a complete example using let and variables, see Use Variables in let.

バージョン 5.0 の新機能。

remove() では、デフォルトの 書込み保証 delete (write concern) を使用する コマンドを使用します。デフォルト以外の書込み保証 (write concern) を指定するには、オプション パラメーターに書込み保証 (write concern) を含めます。

デフォルトで、remove()query式に一致するすべてのドキュメントを削除します。justOneオプションを指定して、操作を1つのドキュメントの除くに制限します。指定された順序でソートされた1つのドキュメントを削除するには、findAndModify()メソッドを使用します。

複数のドキュメントを除く場合、除く操作がコレクションへの他の読み取り操作や書き込み (write) 操作とインターリーブすることがあります。

remove()時系列コレクションで を使用することはできません。

justOne: true オプションを指定するシャーディングされたコレクションに対して remove() 操作を使用するには、

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

  • クエリ仕様でシャードキーまたは _id フィールドを指定できます。

remove()分散トランザクション内で使用できます。

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

重要

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

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

以下は、 remove()メソッドの例です。

コレクション内のすべてのドキュメントを除くには、空のクエリ ドキュメント{}を指定してremove()メソッドを呼び出します。次の操作により、bios コレクションからすべてのドキュメントが削除されます。

db.bios.remove( { } )

この操作は drop() メソッドと同等ではありません。

コレクションからすべてのドキュメントを削除するには、drop() メソッドを使用してインデックスを含むコレクション全体を削除してから、コレクションを再度作成してインデックスを再構築する方が効率的な場合があります。

削除条件に一致するドキュメントを除くには、<query>パラメータを指定してremove()メソッドを呼び出します。

以下の操作は、qty20 より大きいコレクション products からすべてのドキュメントを削除します。

db.products.remove( { qty: { $gt: 20 } } )

レプリカセットに次の操作を適用すると、qty20 を超えるすべてのドキュメントがコレクション products から削除され、w: 2書込み保証(write concern)wtimeout 5,000 ミリ秒に指定されます。この操作は、書き込み (write) がプライマリと 1 つのセカンダリの両方に伝達された後に戻されるか、5 秒後にタイムアウトします。

db.products.remove(
{ qty: { $gt: 20 } },
{ writeConcern: { w: "majority", wtimeout: 5000 } }
)

削除条件に一致する最初のドキュメントを除くには、query条件とjustOneパラメータをtrueまたは1に設定してremove()メソッドを呼び出します。

次の操作は、qty20 より大きいコレクション products から最初のドキュメントを削除します。

db.products.remove( { qty: { $gt: 20 } }, true )

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

コレクション myCollは、次のドキュメントを含みます。

{ _id: 1, category: "café", status: "A" }
{ _id: 2, category: "cafe", status: "a" }
{ _id: 3, category: "cafE", status: "a" }

次の操作には照合オプションが含まれます。

db.myColl.remove(
{ category: "cafe", status: "A" },
{ collation: { locale: "fr", strength: 1 } }
)

バージョン 5.0 の新機能。

コマンド内の他の場所からアクセスできる変数を定義するには、 letオプションを使用します。

注意

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

コレクション cakeFlavors を以下ように作成します。

db.cakeFlavors.insertMany( [
{ _id: 1, flavor: "chocolate" },
{ _id: 2, flavor: "strawberry" },
{ _id: 3, flavor: "cherry" }
] )

次の例では、lettargetFlavor 変数を定義し、その変数を使用してストロベリー ケーキのフレーバーを削除します。

db.cakeFlavors.remove(
{ $expr: { $eq: [ "$flavor", "$$targetFlavor" ] } },
{ let : { targetFlavor: "strawberry" } }
)

remove() 操作のステータスを含む WriteResult() オブジェクトを返します。成功すると、WriteResult() オブジェクトには削除されたドキュメント数に関する情報が含まれます。

WriteResult({ "nRemoved" : 4 })

remove() に書込み保証 (write concern) エラーが発生した場合、結果には WriteResult.writeConcernError フィールドが含まれます。

WriteResult({
"nRemoved" : 7,
"writeConcernError" : {
"code" : 64,
"codeName" : "WriteConcernTimeout",
"errmsg" : "waiting for replication timed out",
"errInfo" : {
"wtimeout" : true,
"writeConcern" : {
"w" : "majority",
"wtimeout" : 1,
"provenance" : "getLastErrorDefaults"
}
}
}
})

remove() に書込み保証 (write concern) 以外のエラーが発生した場合、結果には WriteResult.writeError フィールドが含まれます。

WriteResult({
"nRemoved" : 0,
"writeError" : {
"code" : 2,
"errmsg" : "unknown top level operator: $invalidFieldName"
}
})
このページを評価