Count() および Remove() 関数 MongoDB 例を挙げて

⚡ スマートサマリー

Count() および Remove() 関数 MongoDB コレクションに含まれるドキュメントの数を報告し、コレクションからドキュメントを削除します。count() メソッドはドキュメントの総数を返し、remove() メソッドはすべてのドキュメントを削除するか、指定された条件に一致するドキュメントのみを削除します。

  • 🔢 文書数をカウントする: count() メソッドは、コレクション内のドキュメント数、またはクエリに一致するドキュメント数を返します。
  • 🎯 フィルター付きカウント: count() 関数に条件を渡すと、その条件を満たすドキュメントのみが報告されます。
  • 🗑️ ドキュメントの削除: remove() メソッドは、すべてのドキュメントを削除するか、条件オブジェクトに一致するドキュメントを削除します。
  • ☝️ 1つ削除します: justOneオプションは、remove()関数が一致するすべてのドキュメントを削除するのではなく、一致する単一のドキュメントを削除するように制限します。
  • 🔄 現代的な方法: countDocuments() と deleteMany() は、現在非推奨となっている count() と remove() の代替関数です。
  • 🖨️ 出力を確認します: 各コマンドは、削除された文書の数または件数を示す結果を返します。

Count() および Remove() 関数 MongoDB

MongoDB Count() 関数

集計の概念は、クエリで返された結果に対して計算を実行することです。たとえば、実行されたクエリに従ってコレクション内のドキュメントの数を知りたいとします。 MongoDB count() 関数を提供します。

の例 MongoDB Count() 関数

この例を見てみましょう。

db.Employee.count()

Code 説明:

  • 上記のコードは count 関数を実行します。

コマンドが正常に実行されると、次の出力が表示されます。

出力:

の例 MongoDB Count() 関数

出力には、コレクション内に 4 つのドキュメントが存在することが明確に示されています。

MongoDB クエリ条件によるカウント

count() メソッドは、クエリ条件を渡す場合に最も役立ちます。これにより、コレクション全体ではなく、条件に一致するドキュメントのみをカウントできます。これは、部門に所属する従業員数や未処理の注文数など、レポートを作成する際に便利です。

次の例は、従業員IDが2より大きい従業員の数をカウントします。

db.Employee.count({Employeeid:{$gt:2}})

ここで何が起こるか:

  • クエリオブジェクト {Employeeid:{$gt:2}} は、$gt (より大きい) 演算子を使用してフィルタとして機能します。
  • count() は、フィルター条件を満たすドキュメントの数のみを返します。
  • 残りのコレクションは合計には含まれません。

現在 MongoDB バージョンによっては、countDocuments() は条件付きカウントに推奨されるメソッドです。なぜなら、常に正確な結果を返すからです。同じクエリがそれでも動作します。

db.Employee.countDocuments({Employeeid:{$gt:2}})

どちらのコマンドも単一の数値を返します。この数値は変数に格納することも、直接表示することもできます。クエリ対象フィールドに一致するインデックスを追加することで、大規模なコレクションでも条件付きカウントを高速に実行できます。

変更の実行

他の2つの操作クラスは MongoDB は更新ステートメントと削除ステートメントです。

更新操作では既存のデータを変更でき、削除操作ではコレクションからデータを削除できます。

Remove() 関数の MongoDB

In MongoDB db.collection.remove() メソッドは、コレクションからドキュメントを削除するために使用されます。 すべてのドキュメントをコレクションから削除することも、特定の条件に一致するドキュメントのみをコレクションから削除することもできます。

単に削除コマンドを発行すると、すべてのドキュメントがコレクションから削除されます。

の例 MongoDB Remove() 関数

次のコード例は、コレクションから特定のドキュメントを削除する方法を示しています。

db.Employee.remove({Employeeid:22})

Code 説明:

  • 上記のコードは削除関数を使用し、この場合は従業員 ID が 22 であるドキュメントを削除するという基準を指定します。

コマンドが正常に実行されると、次の出力が表示されます。

出力:

の例 MongoDB Remove() 関数

出力結果には、1つのドキュメントが削除されたことが表示されます。

すべてのドキュメントを削除するか、単一のドキュメントを削除するか

remove() メソッドは、渡される引数に応じて、一致するすべてのドキュメントを削除することも、1つのドキュメントだけを削除することもできます。この違いを理解しておくことで、意図しないデータ損失を防ぐことができます。

コレクション内のすべてのドキュメントを削除するには、空の条件を渡します。

db.Employee.remove({})

これはすべてのドキュメントを削除しますが、コレクション自体は保持します。条件に一致するドキュメントのみを削除するには、前述のようにクエリ オブジェクト {Employeeid:22} を渡します。複数のドキュメントが一致し、最初のドキュメントのみを削除したい場合は、justOne オプションを追加します。

db.Employee.remove({EmployeeName:"Smith"}, {justOne:true})

主な違いは次のとおりです。

  • remove({}) はコレクション内のすべてのドキュメントを削除します。
  • remove({condition}) は、条件に一致するすべてのドキュメントを削除します。
  • remove({condition}, {justOne:true}) は、最初に一致したドキュメントのみを削除します。

削除コマンドを実行する前に必ず条件を再確認してください。フィルターが空または間違っていると、コレクション全体が削除される可能性があります。 MongoDBdeleteOne() と deleteMany() はこれらのパターンを置き換え、意図をより明確にします。

count() と remove() の現代的な代替手段

count() と remove() はどちらもレガシーメソッドです。 MongoDB ドライバーはそれらを非推奨としてマークし、より明確な代替手段を提供します。以下の表は、各旧方式を現代の同等の方式に対応付けたものです。

レガシーメソッド 現代の代替品 目的
カウント() countDocuments() 一致するドキュメントの正確な数を返します
カウント() 推定文書数() すべてのドキュメントの概算数を高速に返します
削除する() deleteOne() フィルターに一致する最初のドキュメントを削除します
削除する() deleteMany() フィルターに一致するすべてのドキュメントを削除します

新規アプリケーションでは、これらの最新の手法を推奨します。これらの手法では、カウントと推定、および1つのドキュメントの削除と複数のドキュメントの削除が分離されているため、クエリがより安全で読みやすくなります。従来の count() および remove() は、古いチュートリアルやスクリプトでは引き続き使用できます。

よくあるご質問

remove() はドキュメントを削除しますが、コレクションとそのインデックスは保持します。drop() は、すべてのドキュメントとインデックスを含むコレクション全体を削除します。データを削除する場合は remove を、コレクション全体を破棄する場合は drop を使用してください。

いいえ。remove() はコレクション内のドキュメントのみを削除します。コレクション、そのインデックス、および構成はそのまま残るため、後で同じコレクションに新しいドキュメントを挿入しても、コレクションを再作成する必要はありません。

従来の count() 関数は、シャーディングされたクラスタで操作が失敗した場合に概算値を返すことがあります。正確な合計値を取得するには、集計を実行する countDocuments() 関数を使用してください。精度よりも速度が重要な場合は、estimatedDocumentCount() 関数を使用してください。

AIは、単純なリクエストを適切なフィルターを適用した正しい件数カウントまたは削除クエリに変換し、削除コマンドがすべてのドキュメントに影響を与える場合は警告を発します。実行前に必ず内容を確認してください。

はい。AIは削除コマンドや複数削除コマンドをレビューし、コレクション全体をクリアしてしまうフィルターが不足している場合はそれを指摘し、実行前に条件を追加したりバックアップを取ったりすることを提案できます。