listCollections

On this page本页内容

Definition定义

listCollections

Retrieve information, i.e. the name and options, about the collections and views in a database. 检索数据库中集合和视图的信息,即名称和选项。Specifically, the command returns a document that contains information with which to create a cursor to the collection information. 具体来说,该命令返回一个文档,该文档包含用于创建指向集合信息的游标的信息。mongosh provides the db.getCollectionInfos() and the db.getCollectionNames() helper methods.提供了db.getCollectionInfos()db.getCollectionNames()帮助器方法。

The command has the following form:命令的格式如下:

{ listCollections: 1, filter: <document>, nameOnly: <boolean>, authorizedCollections: <boolean>, comment: <any> }

The listCollections command can take the following optional field:listCollections命令可以采用以下可选字段:

Field字段Type类型Description描述
filterdocument

Optional. 可选。A query expression to filter the list of collections.用于筛选集合列表的查询表达式。

You can specify a query expression on any of the fields returned by listCollections.您可以在listCollections返回的任何字段上指定查询表达式。

nameOnlyboolean

Optional. 可选。A flag to indicate whether the command should return just the collection/view names and type or return both the name and other information.一个标志,指示命令是否应仅返回集合/视图名称和类型,或同时返回名称和其他信息。

Returning just the name and type (view or collection) does not take collection-level locks whereas returning full collection information locks each collection in the database.仅返回名称和类型(viewcollection)不会获取集合级锁,而返回完整集合信息会锁定数据库中的每个集合。

The default value is false.默认值为false

Note注意

When nameOnly is true, your filter expression can only filter based on a collection's name and type. nameOnlytrue时,filter表达式只能基于集合的名称和类型进行筛选。No other fields are available.没有其他字段可用。

New in version 4.0.在版本4.0中新增

authorizedCollectionsboolean

Optional. 可选。A flag, when set to true and used with nameOnly: true, that allows a user without the required privilege (i.e. listCollections action on the database) to run the command when access control is enforced.一个标志,当设置为true并与nameOnly:true一起使用时,它允许没有所需权限的用户(即数据库上的listCollections操作)在执行访问控制时运行命令。

When both authorizedCollections and nameOnly options are set to true, the command returns only those collections for which the user has privileges. authorizedCollectionnameOnly选项都设置为true时,该命令仅返回用户具有权限的集合。For example, if a user has find action on specific collections, the command returns only those collections; or, if a user has find or any other action, on the database resource, the command lists all collections in the database.例如,如果用户对特定集合执行find操作,则该命令仅返回这些集合;或者,如果用户对数据库资源执行了find或任何其他操作,则该命令将列出数据库中的所有集合。

The default value is false. 默认值为falseThat is, the user must have listCollections action on the database to run the command.也就是说,用户必须对数据库执行listCollections操作才能运行该命令。

For a user who has listCollections action on the database, this option has no effect since the user has privileges to list the collections in the database.对于对数据库执行listCollections操作的用户,此选项无效,因为该用户具有在数据库中列出集合的权限。

When used without nameOnly: true, this option has no effect. 在没有nameOnly: true的情况下使用时,此选项无效。That is, the user must have the required privileges to run the command when access control is enforced. 也就是说,当执行访问控制时,用户必须具有运行命令所需的权限。Otherwise, the user is unauthorized to run the command.否则,用户无权运行该命令。

New in version 4.0.在版本4.0中新增

commentany

Optional. 可选。A user-provided comment to attach to this command. Once set, this comment appears alongside records of this command in the following locations:用户提供了附加到此命令的注释。设置后,此注释将与此命令的记录一起显示在以下位置:

A comment can be any valid BSON type(string, integer, object, array, etc).注释可以是任何有效的BSON类型(字符串、整数、对象、数组等)。

New in version 4.4.在版本4.4中新增

Behavior行为

Filter筛选器

Use a filter to limit the results of listCollections. 使用筛选器限制listCollections的结果。You can specify a filter on any of the fields returned in the listCollections result set.您可以对listCollections结果集中返回的任何字段指定filter

Locks

Changed in version 4.0.在版本4.0中更改

The listCollections command takes Intent Shared lock on the database. listCollections命令获取数据库的Intent Shared锁。In previous versions, the command takes Shared lock on the database.在以前的版本中,该命令获取数据库的共享锁。

Unless the nameOnly option is specified, the command also takes an Intent Shared lock on each of the collections in turn while holding the Intent Shared lock on the database.除非指定了nameOnly选项,否则该命令还会依次对每个集合执行Intent Shared锁,同时对数据库执行Intent Share锁。

Client Disconnection客户端断开连接

Starting in MongoDB 4.2, if the client that issued the listCollections disconnects before the operation completes, MongoDB marks the listCollections for termination (i.e. killOp on the operation).从MongoDB 4.2开始,如果在操作完成之前发出listCollections的客户端断开连接,MongoDB会标记listCollections终止(即操作上的killOp)。

Replica Set Member State Restriction副本集成员状态限制

Starting in MongoDB 4.4, to run on a replica set member, listCollections operations require the member to be in PRIMARY or SECONDARY state. 从MongoDB 4.4开始,要在副本集成员上运行,listCollections操作要求成员处于PRIMARYSECONDARY状态。If the member is in another state, such as STARTUP2, the operation errors.如果成员处于其他状态,如STARTUP2,则操作将出错。

In previous versions, the operations can also be run when the member is in STARTUP2. 在以前的版本中,也可以在成员处于STARTUP2时运行操作。However, the operations wait until the member transitions to RECOVERING.但是,操作将等待成员转换到RECOVERING

Required Access所需访问权限

To run listCollections when access control is enforced, users must, in general, have privileges that grant listCollections action on the database. 若要在强制执行访问控制时运行listCollections,用户通常必须具有在数据库上授予listCollections操作的权限。For example, the following privilege grants users to run db.getCollectionInfos() against the test database:例如,以下权限授予用户对test数据库运行db.getCollectionInfos()

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

The built-in role read provides the privilege to run listCollections for a specific database.内置角色read提供了为特定数据库运行listCollections的权限。

Starting in version 4.0, however, user without the required privilege can run the command with both authorizedCollections and nameOnly options set to true. 但是,从4.0版开始,没有所需权限的用户可以在authorizedCollectionnameOnly选项都设置为true的情况下运行该命令。In this case, the command returns just the name and type of the collection(s) to which the user has privileges.在这种情况下,该命令仅返回用户具有权限的集合的名称和类型。

For example, consider a user with a role that grants just the following privilege:例如,考虑具有仅授予以下权限的角色的用户:

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

The user can run the command if the command includes bothauthorizedCollections and nameOnly options set to true(with or without the filter option):如果该命令同时包含authorizedCollectionnameOnly选项,则用户可以运行该命令(带有或不带有筛选器选项):

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

The operation returns the name and type of the foo collection.该操作返回foo集合的名称和类型。

However, the following operations (with or without the filter option) error for the user without the required access:但是,对于没有所需访问权限的用户,以下操作(使用或不使用filter选项)会出错:

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

show collections

Starting in version 4.0 of the mongo shell, show collections is equivalent to:mongoshell的4.0版本开始,show collections相当于:

db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
  • For users with the required access, show collections lists the non-system collections for the database.对于具有所需访问权限的用户,show collections列出了数据库的非系统集合。
  • For users without the required access, show collections lists only the collections for which the users has privileges.对于没有所需访问权限的用户,show collections仅列出用户具有权限的集合。

Earlier MongoDB Versions早期MongoDB版本

When a version 4.0 mongo shell is connected to an earlier version MongoDB deployment that does not support authorizedCollections and nameOnly options,当4.0版mongo shell连接到不支持authorizedCollectionnameOnly选项的早期版本MongoDB部署时,

Output输出

listCollections.cursor

A document that contains information with which to create a cursor to documents that contain collection names and options. 包含信息的文档,用于创建指向包含集合名称和选项的文档的游标。The cursor information includes the cursor id, the full namespace for the command, as well as the first batch of results. 游标信息包括游标id、命令的完整名称空间以及第一批结果。Each document in the batch output contains the following fields:批处理输出中的每个文档都包含以下字段:

Field字段Type类型Description描述
nameStringName of the collection.集合的名称。
typeStringType of data store. 数据存储的类型。Returns collection for collections, view for views, and timeseries for time series collection.返回集合collection视图view时间序列集合timeseries
optionsDocument

Collection options.集合选项。

These options correspond directly to the options available in db.createCollection(). 这些选项直接对应于db.createCollection()中可用的选项。For the descriptions on the options, see db.createCollection().有关选项的说明,请参阅db.createCollection()

infoDocument

Lists the following fields related to the collection:列出与集合相关的以下字段:

readOnly
boolean. If true the data store is read only.boolean。如果为true,则数据存储为只读。
uuid
UUID. Once established, the collection UUID does not change. 一旦建立,集合UUID不会更改。The collection UUID remains the same across replica set members and shards in a sharded cluster.在分片化集群中,集合UUID在副本集成员和分片之间保持不变。
idIndexDocumentProvides information on the _id index for the collection.提供有关集合的_id索引的信息。
listCollections.ok

The return value for the command. 命令的返回值。A value of 1 indicates success.值1表示成功。

Example示例

List All Collections列出所有集合

The following example uses the db.getCollectionInfos() helper to return information for all collections in the records database:以下示例使用db.getCollectionInfos()帮助器返回records数据库中所有集合的信息:

use records
db.getCollectionInfos();
Tip提示
See also: 参阅:
←  killOplistDatabases →