在 MongoDB Shell 中列出的所有集合

Tahseen Tauseef 2024年2月15日
  1. 使用 show collections 命令列出 MongoDB Shell 中的所有集合
  2. 使用 listCollections 命令列出 MongoDB Shell 中的所有集合
  3. 使用 db.getCollectionNames() 方法列出 MongoDB Shell 中的所有集合
  4. 使用 db.getCollectionInfos() 方法列出 MongoDB Shell 中的所有集合
在 MongoDB Shell 中列出的所有集合

使用 MongoDB 时,有几种方法可以列出数据库中的集合。本文将讨论四种不同的方法来获取 MongoDB 数据库中的集合列表。

这些方法如下:

  1. show collections 命令
  2. listCollections 命令
  3. db.getCollectionNames() 方法
  4. db.getCollectionInfos() 方法

使用 show collections 命令列出 MongoDB Shell 中的所有集合

你将使用 Mongo shell 命令 show collections 来获取 MongoDB 集合列表。此命令生成你在 MongoDB 数据库中创建的所有集合的列表。

如果你首先选择一个至少存在一个集合的数据库来使用该命令,那将是最好的。

让我们使用 use 命令来选择一个数据库。

use <BlocTAKdatabase>

之后,你可以使用 show collections 查询运行命令。

show collections

上述查询的结果如下所示。

employees
clients
clienttype
services
system.views

在这种情况下,有五个结果。clienttype 是一个视图,尽管你无法通过查看它来判断。

其余的项目是集合。system.views 是一个系统集合,包含有关每个数据库视图的信息。

你的访问级别将决定返回集合的输出。

  1. 对于具有所需访问权限的用户,show collections 列出数据库的非系统集合。
  2. 对于没有所需访问权限的用户,show collections 仅列出用户有权访问的集合。

使用 listCollections 命令列出 MongoDB Shell 中的所有集合

管理员命令 listCollections 返回数据库中所有集合和视图的名称和选项。生成的数据是文档的形式。

下面给出了该命令的查询。

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

上述查询的结果在下面的屏幕截图中给出。

列出集合

该文档包含为信息集合创建游标的信息。你也可以像这样运行命令:

db.runCommand( { listCollections: 1.0 } )

使用它可以提供有关集合的大量信息。查看下面的 db.getCollectionInfos() 示例,以查看像这样运行它时返回的数据。

使用 db.getCollectionNames() 方法列出 MongoDB Shell 中的所有集合

函数 db.getCollectionNames() 返回一个数组,其中包含当前数据库中所有集合和视图的名称。此外,如果运行访问控制,集合的名称是根据用户的权限。

下面给出了此方法的查询。

db.getCollectionNames()

上述查询的结果如下所示。

[ "employees", "clients", "clienttype", "services", "system.views" ]

使用 db.getCollectionInfos() 方法列出 MongoDB Shell 中的所有集合

db.getCollectionInfos() 方法生成一个文档数组,其中包含有关当前数据库视图集合的信息,例如名称和选项。同样,它通过用户的权限级别确定结果。

在这里,你有一个不带任何参数调用它的查询。

db.getCollectionInfos()

上述查询的结果在下面的屏幕截图中给出。

列表集合 1

db.getCollectionInfos() 的真正定义如下:

db.getCollectionInfos(filter, nameOnly, authorizedCollections)

因此,你可以使用 filter 参数通过查询短语来缩小集合列表的范围。你可以在方法返回的任何字段上使用它。

nameOnly 参数可以指定该方法应该只返回集合的名称。

nameOnly: true 一起使用时,authorizedCollections 参数允许用户在没有所需权限的情况下应用访问控制来运行命令。在这种情况下,该命令仅返回用户有权访问的集合。

这是使用带有这些参数的 db.getCollectionInfos() 的查询。

db.getCollectionInfos( {}, true, true )

上述查询的结果在下面的屏幕截图中给出。

列出集合 2

这是一个查询示例,你可以在其中将其过滤为特定名称。

db.getCollectionInfos( { name: "clients" }, true, true )

上述查询的结果如下所示。

[ { "name" : "clients", "type" : "collection" } ]

这就是当你删除最后两个参数时会发生的情况。

db.getCollectionInfos( { name: "clients" } )

上述查询的结果如下所示。

[
    {
        "name" : "clients",
        "type" : "collection",
        "options" : {

        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    }
]

因此,使用这篇 MongoDB 文章,你现在可以使用四种不同的方法来列出 MongoDB 数据库中存在的所有集合。这些方法是 show collections 命令、listCollections 命令、db.getCollectionNames() 方法和 db.getCollectionInfos() 方法。