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でも動的にドキュメントの構造を調べられるので、データ検証やデバッグの際にとても便利です。
-
MongoDBでドキュメントのフィールドにアクセスする方法|find()とプロジェクションの使い方
MongoDBでドキュメント内のフィールドにアクセスするには、find()メソッドを使用します。この記事では、実際にコレクションを作成し、ドキュメントを挿入したうえで、特定のフィールドだけを取得する方法をサンプルコード付きで解説します。 コレクションの作成とドキュメントの挿入 まず、サンプル用のコレクション「demo565」を作成し、3件のドキュメントを挿入します。insertOne()メソッドを使って、1件ずつ登録していきましょう。 > db.demo565.insertOne( ... { ... id:101, ... Name:David, ... Countr
-
MongoDBでカーソルの反復回数をカウントする方法を解説
MongoDBでカーソルの反復をカウントするには?MongoDBにおいて、whileループとfind()メソッドが返すカーソルを組み合わせた独自のロジックを実装することで、カーソルの反復回数(特定の条件に一致するドキュメント数)をカウントできます。本記事では、実際のコード例を通じて、その具体的な手順をわかりやすく解説します。1. ドキュメントを含むコレクションを作成するまず、サンプル用のドキュメントを挿入してコレクションを作成します。> db.demo724.insertOne( ... { ... details: ... { ...