在 MongoDB Shell 中列出的所有集合

Tahseen Tauseef 2023年1月30日 2022年5月13日
  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() 方法。