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

MongoDBのcount()とfind().count()の違いは?実例で解説

MongoDBにおける count()find().count() の間には、機能的な違いはありません。どちらもコレクション内のドキュメント数を返します。この記事では、実際のコード例を通じて、両者が同じように動作することを確認していきましょう。

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

まず、動作を理解するために、ドキュメントを含むコレクションを作成します。以下のクエリを実行して、コレクションにドキュメントを1件ずつ挿入していきます。

> db.countDemo.insertOne({"UserId":1,"UserName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f9d278d10a061296a3c5d")
}
> db.countDemo.insertOne({"UserId":2,"UserName":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f9d308d10a061296a3c5e")
}
> db.countDemo.insertOne({"UserId":3,"UserName":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f9d3a8d10a061296a3c5f")
}
> db.countDemo.insertOne({"UserId":4,"UserName":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7f9d428d10a061296a3c60")
}

find()で全ドキュメントを表示する

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。クエリは以下のとおりです。

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

出力結果は次のようになります。

{
   "_id" : ObjectId("5c7f9d278d10a061296a3c5d"),
   "UserId" : 1,
   "UserName" : "John"
}
{
   "_id" : ObjectId("5c7f9d308d10a061296a3c5e"),
   "UserId" : 2,
   "UserName" : "Carol"
}
{
   "_id" : ObjectId("5c7f9d3a8d10a061296a3c5f"),
   "UserId" : 3,
   "UserName" : "Bob"
}
{
   "_id" : ObjectId("5c7f9d428d10a061296a3c60"),
   "UserId" : 4,
   "UserName" : "Mike"
}

count()でレコード数を取得する

次に、count() を使ってレコード数をカウントしてみます。

> db.countDemo.count();

出力結果:

4

find().count()でレコード数を取得する

続いて、find().count() を実行した場合を見てみましょう。

> db.countDemo.find().count();

出力結果:

4

まとめ

このように、count()find().count() はどちらも同じ結果「4」を返します。コレクション内のドキュメント数をカウントするという点で、両者に機能上の違いはないといえます。

補足:新しいバージョンのMongoDBでの注意点

MongoDBの比較的新しいバージョンでは、count() メソッドは非推奨(deprecated)となっています。正確なドキュメント数を取得したい場合は countDocuments() を、パフォーマンス重視で概算数でよい場合は estimatedDocumentCount() を使用することが推奨されているため、実務ではこれらの利用も検討するとよいでしょう。

  1. C#と.NETの違いをわかりやすく解説!言語とフレームワークの関係

    C#と.NETの基本的な違いC#(シーシャープ)はマイクロソフトが開発したプログラミング言語であり、一方の.NET(ドットネット)はアプリケーション開発を支援するフレームワークです。この2つは密接な関係にありますが、それぞれの役割はまったく異なります。.NETの中核となる「共通言語ランタイム(CLR)」.NETには「共通言語ランタイム(CLR:Common Language Runtime)」と呼ばれる仮想的な実行環境が組み込まれています。CLRはメモリ管理、例外処理、セキュリティなどを担当し、.NET上で動作するすべてのアプリケーションの土台となる重要なコンポーネントです。C#だけじゃない!

  2. GoとJavaの違いを徹底比較!特徴と使い分けのポイント

    プログラミング言語を選ぶ際、「Go」と「Java」のどちらを採用すべきか迷う開発者は少なくありません。どちらもGoogleや企業システムで広く使われる人気言語ですが、設計思想や言語仕様には大きな違いがあります。本記事では、それぞれの言語の特徴を解説したうえで、両者の主な違いを比較表を使ってわかりやすく整理します。 GoとはGoはGoogleが開発した手続き型(プロシージャル)プログラミング言語です。プログラムはパッケージ単位で構成され、シンプルで読みやすいコード記述を重視した設計になっています。動的言語に近い柔軟なパターンを取り入れつつ、静的型付けによる安全性も兼ね備えています。また、軽量スレ