MongoDBプロファイラー出力の「command」操作とは?仕組みとcountコマンドの実例を解説
MongoDBにおける「command」操作とは
MongoDBのプロファイラー出力を解析していると、opフィールドに「command」という操作種別が表示されることがあります。これは特定のコマンド実行を指しており、MongoDBでは以下の操作が「command」操作として分類されます。
1. count 2. findAndModify 3. aggregate
つまり、ドキュメント数のカウント(count)、ドキュメントの検索と更新を同時に行う(findAndModify)、集計パイプライン処理(aggregate)などは、通常のクエリ(query)ではなく「コマンド」として記録されるのです。
ここからは、代表的な例としてcountの動作を実際に確認していきましょう。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成します。insertOne()メソッドを使って、3件のドキュメントを順に挿入します。
> db.demo443.insertOne({"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e78d281bbc41e36cc3caeb9")
}
> db.demo443.insertOne({"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e78d285bbc41e36cc3caeba")
}
> db.demo443.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e78d288bbc41e36cc3caebb")
}各挿入操作に対して、acknowledged: trueと挿入されたドキュメントのObjectIdが返されていることがわかります。
find()メソッドで全ドキュメントを表示
次に、find()メソッドを使用して、コレクション内のすべてのドキュメントを表示します。
> db.demo443.find();
このクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e78d281bbc41e36cc3caeb9"), "Name" : "Chris" }
{ "_id" : ObjectId("5e78d285bbc41e36cc3caeba"), "Name" : "Bob" }
{ "_id" : ObjectId("5e78d288bbc41e36cc3caebb"), "Name" : "David" }先ほど挿入した3件のドキュメントが正しく登録されていることが確認できました。
countコマンドの実行例
それでは、MongoDBにおけるcountの実行例を見てみましょう。コレクション内のドキュメント総数を取得するには、count()メソッドを呼び出します。
> db.demo443.count();
実行結果は以下の通りです。
3
コレクションに存在するドキュメント数「3」が返されました。
まとめ
MongoDBのプロファイラーにおいて「command」として分類されるのは、count・findAndModify・aggregateの3つの操作です。プロファイラーログを読み解く際に、これらが通常のfindクエリとは異なる種別として記録される点を理解しておくと、パフォーマンス分析やスロークエリの調査がよりスムーズになります。
-
コマンドプロンプトとPowerShellの違いとは?特徴と使い分けを徹底解説
Windowsユーザーの日常的な作業では、コマンドラインインターフェースを意識する場面は多くありません。しかし、より高度なタスクを行いたい場合、コマンドラインはGUIよりもはるかに柔軟性と制御性を提供してくれます。実際、それこそがWindowsに「コマンドプロンプト」と「PowerShell」という2つのコマンドライン環境が存在する理由です。 どちらもコマンドラインインターフェースであるため、一見するとよく似ていますが、両者には大きな違いがあります。この記事では、それぞれの役割と特徴を解説し、PowerShellがコマンドプロンプトとどう違うのかを詳しく見ていきます。 コマンドプロンプトとは
-
1つのコマンドでMongoDBを安全に停止する方法|shutdownServerの使い方を解説
単一コマンドでMongoDBを停止する方法 MongoDBサーバーを1つのコマンドで停止したい場合は、mongoシェルの--evalオプションを使い、adminデータベースに対してshutdownServer()を実行するのが最も簡単な方法です。 使用するコマンドの基本構文は以下の通りです。 mongo --eval db.getSiblingDB(admin).shutdownServer() getSiblingDB(admin)でadminデータベースに切り替えてからshutdownServer()を呼び出すことで、接続中のMongoDBサーバーをシャットダウンできます。 実行手順 そ