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

MongoDBでドキュメント内のキー数を数える方法【サンプルコード付き】

MongoDBでドキュメント内のキー数を数える方法

MongoDBには、ドキュメント内のキーの数を数えるための組み込み関数は用意されていません。キー数を調べたい場合は、mongoシェル上で簡単なJavaScriptのコードを自分で書く必要があります。

この記事では、実際にサンプルコレクションを作成しながら、ドキュメントのキー数をカウントする具体的な手順をわかりやすく解説します。

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

まず、insertOne()メソッドを使って、ドキュメントを1件含むコレクションを作成します。クエリは以下のとおりです。

> db.numberofKeysInADocumentDemo.insertOne({
   "UserName":"John","UserAge":21,"UserEmailId":"john12@gmail.com","UserCountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9132584afe5c1d2279d6ac")
}

ドキュメントの内容を確認する

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

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

実行結果は以下のようになります。

{
   "_id" : ObjectId("5c9132584afe5c1d2279d6ac"),
   "UserName" : "John",
   "UserAge" : 21,
   "UserEmailId" : "john12@gmail.com",
   "UserCountryName" : "US"
}

キーの数を数えるクエリ

それでは本題の、ドキュメント内のキー数のカウント方法です。findOne()でドキュメントを1件取得し、for...inループでプロパティを順番に数えていきます。

> myDocument = db.numberofKeysInADocumentDemo.findOne({});
{
   "_id" : ObjectId("5c9132584afe5c1d2279d6ac"),
   "UserName" : "John",
   "UserAge" : 21,
   "UserEmailId" : "john12@gmail.com",
   "UserCountryName" : "US"
}
> numberOfKeys=0;
0
> for(i in myDocument){numberOfKeys ++;}
> print("The document has " + numberOfKeys + " Keys");

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

The document has 5 Keys

コードのポイント

このコードでは、findOne()で取得したドキュメント(JavaScriptオブジェクト)に対してfor...inループを回し、プロパティ(キー)の数を変数numberOfKeysに加算しています。

なお、_idフィールドも1つのキーとしてカウントされるため、今回の例ではユーザー定義のフィールド4つ(UserName、UserAge、UserEmailId、UserCountryName)に_idを加えた「5」が出力されます。もし_idを除外して数えたい場合は、ループ内にif(i != "_id")のような条件分岐を追加すれば対応できます。

このテクニックを覚えておけば、スキーマレスなMongoDBでも動的にドキュメントの構造を調べられるので、データ検証やデバッグの際にとても便利です。

  1. MongoDBでドキュメントのフィールドにアクセスする方法|find()とプロジェクションの使い方

    MongoDBでドキュメント内のフィールドにアクセスするには、find()メソッドを使用します。この記事では、実際にコレクションを作成し、ドキュメントを挿入したうえで、特定のフィールドだけを取得する方法をサンプルコード付きで解説します。 コレクションの作成とドキュメントの挿入 まず、サンプル用のコレクション「demo565」を作成し、3件のドキュメントを挿入します。insertOne()メソッドを使って、1件ずつ登録していきましょう。 > db.demo565.insertOne( ... { ... id:101, ... Name:David, ... Countr

  2. MongoDBでカーソルの反復回数をカウントする方法を解説

    MongoDBでカーソルの反復をカウントするには?MongoDBにおいて、whileループとfind()メソッドが返すカーソルを組み合わせた独自のロジックを実装することで、カーソルの反復回数(特定の条件に一致するドキュメント数)をカウントできます。本記事では、実際のコード例を通じて、その具体的な手順をわかりやすく解説します。1. ドキュメントを含むコレクションを作成するまず、サンプル用のドキュメントを挿入してコレクションを作成します。> db.demo724.insertOne( ... { ... details: ... { ...