AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

listCollections(データベースコマンド)

listCollections

データベース内のコレクションとビューの名前や作成オプションなどの情報を取得します。

listCollections コマンドは、データベース内のすべてのコレクションとビューのソートされていないリストを返します。返されたドキュメントを使用して、コレクションにカーソルを作成します。

mongosh は、db.getCollectionInfos() および db.getCollectionNames()ヘルパーメソッド、および show collections コマンドを提供します。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

db.runCommand( { listCollections: 1, filter: <document>, nameOnly: <boolean>, authorizedCollections: <boolean>, comment: <any> })

コマンドは以下の任意フィールドを取ることができます。

フィールド
タイプ
説明

filter

ドキュメント

任意。 コレクションの一覧をフィルター処理するクエリ述語。

によって 返されるフィールド listCollectionsのいずれかにクエリ述語を指定できます。

nameOnly

ブール値

任意。コマンドが名前とタイプ(view、collection、または timeseries)のみを返すか、名前とその他の情報の両方を返すかを示すフラグです。

デフォルト値は false です。

nameOnly が true の場合、filter 式はコレクションの名前と型に基づいてのみフィルタリングできます。他のフィールドは使用できません。

authorizedCollections

ブール値

任意.これはフラグであり、true に設定して nameOnly: true と合わせて使用すると、アクセスコントロールが適用されている場合に、必要な権限を持たないユーザーにも(データベース上での listCollections アクション)コマンドを実行することを許可します。

authorizedCollections オプションと nameOnly オプションの両方が true に設定されている場合、コマンドはユーザーが権限を持つコレクションのみを返します。例として、ユーザーが特定のコレクションに対して find アクションを持つ場合、コマンドはそれらのコレクションのみを返します。ユーザーがデータベース リソースに対して find またはその他のアクションを持つ場合、コマンドはデータベース内のすべてのコレクションを一覧表示します。

デフォルト値は false です。つまり、コマンドを実行するには、ユーザがデータベースに対して listCollections アクションを持っている必要があります。

データベースでlistCollections アクションを持つユーザーには、このオプションは効果がありません。

nameOnly: true なしで使用しても、このオプションには効果がありません。アクセス制御が強制されている場合、ユーザーはコマンドを実行するために必要な権限を持っている必要があります。そうでない場合、ユーザーはコマンドを実行する権限がありません。

comment

any

任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。

コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。

listCollections コマンドに設定されたコメントは、listCollections カーソルで実行される後続の getMore コマンドに継承されます。

フィルターを使用して、listCollections の結果を制限します。filterの結果セットで返されるフィールドのいずれかにlistCollections を指定します。

listCollections ロック動作:

  • MongoDB 5.0 以前のバージョンでは、listCollections がデータベース上のインテント共有ロックを保持している場合、listCollections はデータベース内の各コレクションでインテント共有ロックを取得します。

  • MongoDB 5.0 以降では、 listCollectionsコレクションまたはデータベース上のインテント共有ロックを引き受けません。listCollectionsは、コレクションに対する排他書き込みロックを保持する操作によってブロックされません。

ロックについて、詳しくはFAQ: 同時実行を参照してください。

操作が完了する前にlistCollectionsを発行したクライアントが切断された場合、MongoDB はlistCollectionsをkillOpを使用して終了対象としてマークします。

レプリカセット ノード上で listCollections 操作を実行するには、ノードが PRIMARY または SECONDARY状態である必要があります。ノードが STARTUP2 などの別の状態にある場合、操作はエラーになります。

アクセス制御が強制されている場合、listCollections コマンドとそのラッパー db.getCollectionInfos() では、listCollections アクションが必要です。listCollections を実行するには、ユーザーにはデータベースに対する listCollectionsアクションを許可する権限が必要です。

たとえば、次のコマンドは、 testデータベースに対してdb.getCollectionInfos()を実行する特権を付与します。

{ resource: { db: "test", collection: "" }, actions: [ "listCollections" ] }

組み込みロール read には、特定のデータベースに対してlistCollections を実行する特権が付与されます。

必要な read 特権を持たないユーザーは、authorizedCollections と nameOnly の両方が trueに設定されている場合に、listCollections を実行できます。この場合、コマンドではユーザーが特権を持つコレクションの名前と型が返されます。

以下のように find 特権のあるロールのユーザーを例に取ります。

{ resource: { db: "sales", collection: "currentQuarter" }, actions: [ "find" ] }

authorizedCollections と nameOnly の両方が true に設定されている場合に、このユーザーは listCollections を実行できます。

db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true })

この操作は、 currentQuarter コレクションの名前と種類を返します。

ただし、ユーザーに必要なアクセス権の承認がない場合、次の操作ではエラーが返されます。

db.runCommand( { listCollections: 1.0, authorizedCollections: true }) db.runCommand( { listCollections: 1.0, nameOnly: true })
listCollections.cursor

コレクション名とオプションを含むドキュメントへのカーソルを作成するために必要な情報を含むドキュメント。カーソル情報には、カーソルID、コマンドの名前空間全体、および結果の最初のバッチが含まれます。バッチする出力内の各ドキュメントには以下のフィールドが含まれます。

フィールド
タイプ
説明

name

文字列

コレクション名。

タイプ

文字列

データ ストアのタイプ。コレクションの場合はcollection 、ビューの場合はview 、時系列コレクションの場合はtimeseriesを返します。

options

ドキュメント

コレクションオプション

これらのオプションは、 db.createCollection()で使用可能なオプションに対応します。オプションの説明については、 db.createCollection() を参照してください。

info

ドキュメント

コレクションに関連する次のフィールドを一覧表示します。

readOnly
booleantrueの場合、データストアは読み取り専用となります。
uuid
UUID一度確立されると、コレクションUUIDは変更されません。コレクション UUID は、シャーディングされたクラスター内のレプリカセット ノードでもシャードでも同一のままです。

idIndex

ドキュメント

コレクションの_idインデックスに関する情報を提供します。

listCollections.ok

コマンドの戻り値です。値が1の場合は成功を示します。

生のコマンド応答が必要ない場合は、db.getCollectionInfos() または db.getCollectionNames()ヘルパーメソッドを使用します。

sample_mflix データベースには、movies、theaters、usersなどのコレクションが含まれています。

コレクション名のリストを取得するには、nameOnly オプションを指定して listCollections コマンドを実行します。

db.runCommand( { listCollections: 1.0, nameOnly: true })
{ cursor: { id: Long('0'), ns: 'sample_mflix.$cmd.listCollections', firstBatch: [ { name: 'movies', type: 'collection' }, { name: 'theaters', type: 'collection' }, { name: 'users', type: 'collection' }, { name: 'embedded_movies', type: 'collection' }, { name: 'sessions', type: 'collection' }, { name: 'comments', type: 'collection' }, { name: 'system.views', type: 'collection' } ] }, ok: 1}

より詳細な情報を取得するには、 nameOnlyオプションを削除してください。

db.runCommand( { listCollections: 1.0 })
{ cursor: { id: Long('0'), ns: 'sample_mflix.$cmd.listCollections', firstBatch: [ { name: 'movies', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'theaters', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'users', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'embedded_movies', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'sessions', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'comments', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'system.views', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } } ] }, ok: 1}

コレクションオプションの場合

コレクション情報の場合