MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで条件に一致するレコード数をカウントする方法|count()の使い方を解説

MongoDBで特定の条件に一致するレコードの件数を取得したい場合は、count()メソッドを使用します。この記事では、実際にコレクションを作成し、条件に基づいてレコードをカウントする手順を具体的なコード例とともに解説します。

サンプルコレクションの作成

まずは、insertOne()メソッドを使ってドキュメントを含むコレクションを作成します。

> db.demo205.insertOne(
...   {
...     "id": "101",
...     "Name": "",
...     "Age": "",
...     "isActive": false
...   }
...);
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3d8a3003d395bdc21346eb")
}
> db.demo205.insertOne(
...   {
...     "id": "102",
...     "Name": "Chris",
...     "Age": "25",
...     "isActive": true
...   }
...);
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3d8a3003d395bdc21346ec")
}
> db.demo205.insertOne(
...   {
...     "id": "103",
...     "Name": "",
...     "Age": "",
...     "isActive": false
...   }
...);
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e3d8a3003d395bdc21346ed")
}

上記のコレクションには3件のドキュメントが登録されました。うち2件は「Name」と「Age」が空文字列で「isActive」がfalse、残りの1件はすべてのフィールドに値が入っています。

登録済みドキュメントの確認

find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。

> db.demo205.find();

実行すると、以下のような出力が得られます。

{ "_id" : ObjectId("5e3d8a3003d395bdc21346eb"), "id" : "101", "Name" : "", "Age" : "", "isActive" : false }
{ "_id" : ObjectId("5e3d8a3003d395bdc21346ec"), "id" : "102", "Name" : "Chris", "Age" : "25", "isActive" : true }
{ "_id" : ObjectId("5e3d8a3003d395bdc21346ed"), "id" : "103", "Name" : "", "Age" : "", "isActive" : false }

条件に一致するレコードをカウントするクエリ

ここからが本題です。条件に一致するレコードの件数をカウントするには、count()メソッドの引数に検索条件を渡します。以下の例では、「Name」が空文字列かつ「Age」が空文字列かつ「isActive」がfalseであるドキュメントをカウントしています。

> db.demo205.count({
...   Name: "",
...   Age: "",
...   "isActive": false
... });

実行結果は以下のとおりです。

2

条件に一致したのは「101」と「103」の2件であるため、正しく「2」が出力されました。

補足:count()とcountDocuments()の違い

なお、MongoDBのバージョン4.0以降ではcount()は非推奨となっており、現在はより正確なcountDocuments()の使用が推奨されています。

> db.demo205.countDocuments({
...   Name: "",
...   Age: "",
...   isActive: false
... });

countDocuments()はフィルタ条件を正確に評価して件数を返すため、実務ではこちらを使うようにしましょう。コレクション全体のおおよその件数だけが必要な場合は、高速なestimatedDocumentCount()も選択肢になります。

  1. MySQLでIS NULLまたは!=1の条件に基づいてレコードを表示するクエリの書き方

    MySQLでNULLまたは1以外のレコードを抽出する方法MySQLでは、特定のカラムがNULLであるレコード、または特定の値と等しくないレコードを抽出したいケースはよくあります。ここでは、「Score」カラムがNULL、もしくは1以外であるレコードを取得する方法を解説します。なお、NULL値との比較には「=」や「!=」が使えない点に注意が必要です。NULLは「不明な値」を意味するため、通常の比較演算子では評価されず、必ずIS NULL演算子を使う必要があります。1. サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable (

  2. MySQLクエリで姓ごとのレコード数を新しい列として追加する方法

    MySQLでは、COUNT()とGROUP BYを組み合わせたサブクエリを元のテーブルとJOINすることで、各レコードの姓(LastName)が出現する回数を、結果セットに新しい列として表示できます。ここでは、「Miller」という姓が2回登場するデータを例に、具体的な手順を解説します。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100), Las