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

MongoDBでコレクション内のドキュメント数をカウントする方法

MongoDBでドキュメント数を数える基本構文

MongoDBのコレクションに格納されているドキュメントの件数を調べるには、count()メソッドを使用します。まず、db.getCollection()で対象のコレクションを変数に取得し、その変数に対してcount()を呼び出すのが基本的な流れです。

let anyVariableName = db.getCollection('yourCollectionName');
yourVariableName.count();

サンプルコレクションを作成する

実際に動きを確認するために、ドキュメントを含むコレクションを新しく作成してみましょう。以下ではinsertOne()メソッドを使って、3件のドキュメントを順番に挿入しています。

> db.countNumberOfDocumentsDemo.insertOne({"CustomerName":"Bob"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9a5e2015e86fd1496b38a1")
}
> db.countNumberOfDocumentsDemo.insertOne({"CustomerName":"Ramit","CustomerAge":23});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9a5e3515e86fd1496b38a2")
}
> db.countNumberOfDocumentsDemo.insertOne({"CustomerName":"Adam","CustomerAge":27,"CustomerCountryName":"US"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9a5e4c15e86fd1496b38a3")
}

各挿入処理に対してacknowledged: trueと自動採番されたObjectIdが返されており、ドキュメントが正常に登録されたことがわかります。

find()メソッドで登録済みドキュメントを確認する

続いて、find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみます。出力を見やすくするためにpretty()を付けています。

> db.countNumberOfDocumentsDemo.find().pretty();

このクエリを実行すると、次のような結果が得られます。

{ "_id" : ObjectId("5c9a5e2015e86fd1496b38a1"), "CustomerName" : "Bob" }
{
    "_id" : ObjectId("5c9a5e3515e86fd1496b38a2"),
    "CustomerName" : "Ramit",
    "CustomerAge" : 23
}
{
    "_id" : ObjectId("5c9a5e4c15e86fd1496b38a3"),
    "CustomerName" : "Adam",
    "CustomerAge" : 27,
    "CustomerCountryName" : "US"
}

3件のドキュメントがそれぞれ異なるフィールド構成で保存されていることが確認できます。MongoDBはスキーマレスなデータベースなので、このようにドキュメントごとに持つフィールドが異なっていても問題ありません。

コレクション内のドキュメント数をカウントする

それでは本題のドキュメント数のカウントです。db.getCollection()でコレクションを取得し、count()を実行します。

> let myCollectionName = db.getCollection('countNumberOfDocumentsDemo');
> myCollectionName.count();

実行結果は以下のとおりです。先ほど挿入した3件のドキュメントが正しくカウントされています。

3

条件を指定してカウントすることも可能

count()には引数としてクエリ条件を渡せるため、特定の条件に一致するドキュメントだけを数えることもできます。たとえば年齢が23歳の顧客のみをカウントする場合は次のように記述します。

> myCollectionName.count({"CustomerAge": 23});
1

補足:新しいバージョンでは非推奨に注意

MongoDB 4.0以降では、シェルのcount()メソッドは非推奨(deprecated)となっています。代わりに、正確な件数を取得するcountDocuments()、または統計情報に基づく概算値を高速に取得するestimatedDocumentCount()の使用が推奨されています。

// 正確な件数を取得
> db.countNumberOfDocumentsDemo.countDocuments();
3

// 概算件数を高速に取得
> db.countNumberOfDocumentsDemo.estimatedDocumentCount();
3

大規模なコレクションで単純な総件数だけが必要な場合はestimatedDocumentCount()、フィルタ条件付きや正確な値が必要な場合はcountDocuments()を使い分けるとよいでしょう。

  1. C#でリストの要素数を数える方法

    C#でリスト(List<T>)に含まれるアイテムの数を数えるには、Countプロパティを使用します。Countプロパティは、リストに現在格納されている要素の数をint型で返します。 リストを作成する まず、サンプルとして文字列型のリストを作成します。 List<string> myList = new List<string>() { electronics, clothing, appliances, accessories }; 要素数を取得する リストの要素数は、次のようにCountプロパティを参照するだけで取得でき

  2. Javaを使ってMongoDBコレクションのドキュメントをソートする方法

    MongoDBコレクションからレコードを取得する際、結果として得られるドキュメントを特定のフィールドの値に基づいて並べ替え(ソート)したいケースはよくあります。MongoDBではsort()メソッドを使用することで、検索結果を昇順または降順に簡単に並べ替えることができます。基本構文MongoDBシェルでの基本的な構文は以下のとおりです。キーの値に「1」を指定すると昇順、「-1」を指定すると降順になります。db.COLLECTION_NAME.find().sort({KEY:1})Javaドライバでのsort()メソッドの使い方JavaのMongoDBライブラリにも同名のsort()メソッドが