Docs Menu
Docs Home
/ / /
PyMongo

データベースコマンドの実行

項目一覧

  • Overview
  • コマンドの実行
  • コマンドカーソル
  • コマンドの例
  • 詳細情報
  • API ドキュメント

このガイドでは、 PyMongoを使用してデータベースコマンドを実行する方法を学習できます。データベースコマンドを使用して、サーバー統計の取得、レプリカセットを初期化、集計パイプラインの実行中など、さまざまな管理および診断タスクを実行できます。

重要

データベース コマンドよりもライブラリ メソッドを優先

ライブラリは、多くのデータベースコマンドのラッパーメソッドを提供します。 可能な場合は、データベースコマンドを実行する代わりにこれらのメソッドを使用することをお勧めします。

管理タスクを実行するには、 PyMongoの代わりに MongoDB Shellを使用します。 シェルは、ドライバーでは使用できない可能性のあるヘルパーメソッドを提供します。

ライブラリまたはシェルに使用できるヘルパーがない場合は、このガイドで説明されている db.runCommand() シェルメソッドまたはドライバーのcommand()メソッドを使用できます。

command()メソッドを使用してデータベースコマンドを実行できます。コマンドと関連する引数を指定する必要があります。コマンドが単純な場合、これらは string として渡すことができます。それ以外の場合は、 dictオブジェクトとして渡すことができます。メソッドは、実行されたコマンドの結果を返します。

次のコードは、 Databasecommand()メソッドを使用してhelloコマンドを実行する方法を示しています。これはサーバーに関する情報を返します。

database = client.get_database("my_db")
hello = database.command("hello")
print(hello)
{
'topologyVersion': {
'processId': ObjectId('6724d211d6b98fa1931e8616'),
'counter': 6
},
'hosts': ['cluster0-shard-00-00.fxoii.mongodb.net:27017',
'cluster0-shard-00-01.fxoii.mongodb.net:27017',
'cluster0-shard-00-02.fxoii.mongodb.net:27017'],
'setName': 'atlas-13l6uw-shard-0',
'setVersion': 114,
'isWritablePrimary': True,
'secondary': False,
'primary': 'cluster0-shard-00-02.fxoii.mongodb.net:27017',
'tags': {
'workloadType': 'OPERATIONAL',
'diskState': 'READY',
'region': 'US_EAST_1',
'provider': 'AWS',
'nodeType': 'ELECTABLE',
'availabilityZone': 'use1-az5'
},
'me': 'cluster0-shard-00-02.fxoii.mongodb.net:27017',
'electionId': ObjectId('7fffffff00000000000000e3'),
'lastWrite': {
'opTime': {
'ts': Timestamp(1730486145, 22),
't': 227
},
'lastWriteDate': datetime.datetime(2024, 11, 1, 18, 35, 45),
'majorityOpTime': {
'ts': Timestamp(1730486145, 22),
't': 227
},
'majorityWriteDate': datetime.datetime(2024, 11, 1, 18, 35, 45)
},
'maxBsonObjectSize': 16777216,
'maxMessageSizeBytes': 48000000,
'maxWriteBatchSize': 100000,
'localTime': datetime.datetime(2024, 11, 1, 18, 35, 45, 309000),
'logicalSessionTimeoutMinutes': 30,
'connectionId': 23889,
'minWireVersion': 0,
'maxWireVersion': 21,
'readOnly': False,
'ok': 1.0,
'$clusterTime': {
'clusterTime': Timestamp(1730486145, 22),
'signature': {
'hash': b"\x1a\xf7{>q%F\xc2\x89\x15\x13W29\x91\xaae'~\xe4",
'keyId': 7379292132843978793
}
},
'operationTime': Timestamp(1730486145, 22)
}

データベースコマンドと対応するパラメータの完全なリストについては、「追加情報 」セクションを参照してください。

command()メソッドは、実行されたコマンドの結果を返します。また、cursor_command() MongoDBコマンドを発行し、応答を コマンド Cursor として解析する メソッドを使用することもできます。 。CommandCursor はコマンドの結果を反復処理するために使用できます。

次の例ではsample_mflixデータベースでcursor_command()メソッドを使用します。 moviesコレクションでfindコマンドを実行し、 runtimeフィールドの値が11のドキュメントをフィルタリングします。

database = client.get_database("sample_mflix")
result = database.cursor_command("find", "movies", filter={"runtime": 11})
print(result.to_list())
{
'_id': ObjectId('573a1390f29313caabcd42e8'),
'runtime': 11,
'title': 'The Great Train Robbery',
...
},
{
{'_id': ObjectId('573a1394f29313caabce0f10'),
'runtime': 11,
'title': 'Glas',
...
},
...

コマンドの応答形式の詳細については、「データベースコマンド 」を参照してください。

注意

読み込み設定 (read preference)

command()cursor_command()メソッドとDatabase メソッドは、コード内の他の場所にある インスタンスに設定した読み込み設定 (read preference)に従いません。 ClientSession の場合session は パラメータを使用して提供され、このセッションは トランザクション 内にあります の場合、コマンドの読み込み設定 (read preference)(read preference)はトランザクションの読み込み設定 (read preference))に設定されます。それ以外の場合、コマンドの読み込み設定( 読み込み設定 (read preference) )はデフォルトでPRIMARY になります。

次のコードに示すように、 read_preferenceパラメータを使用して、コマンド実行の読み込み設定 (read preference)を設定できます。

from pymongo.read_preferences import Secondary
database = client.get_database("my_db")
hello = database.command("hello", read_preference=Secondary())
print(hello)

APIドキュメント の モジュールの詳細については、こちらを参照してください。read_preferences

読み込み設定( 読み込み設定 (read preference) )オプションの詳細については、 MongoDB Serverマニュアルの読み込み設定(read preference) を参照してください。

次の例では、 command()メソッドを使用してdbStatsコマンドを実行し、 sample_mflixデータベースのストレージ統計を取得します。

database = client.get_database("sample_mflix")
result = database.command("dbStats")
print(result)
{'db': 'sample_mflix', 'collections': 9, 'views': 1, 'objects': 67662,
'avgObjSize': 1796.788182436227, 'dataSize': 121574282, 'storageSize': 97779712,
'totalFreeStorageSize': 0, 'numExtents': 0, 'indexes': 13, 'indexSize': 19423232,
'indexFreeStorageSize': 0, 'fileSize': 0, 'nsSizeMB': 0, 'ok': 1}

このコマンドの出力には、データベースの コレクション に関する情報が含まれ、コレクション全体に保存されるデータの量とサイズが示されます。

このガイドの概念の詳細については、 MongoDB Serverマニュアルの次のドキュメントを参照してください。

command()メソッドとcursor_command()メソッドの詳細については、次のPyMongo APIドキュメントを参照してください。

戻る

データの変更を監視