sql >> Databasteknik >  >> NoSQL >> MongoDB

4 sätt att lista samlingarna i en MongoDB-databas

När du använder MongoDB finns det mer än ett sätt att lista samlingarna i en databas.

Här är fyra sätt att få en lista över samlingar i en MongoDB-databas:

  • show collections Kommando
  • listCollections Kommando
  • db.getCollectionNames() Metod
  • db.getCollectionInfos() Metod

show collections Kommando

Om du använder mongoskalet är det snabbaste sättet att få en lista över samlingar att använda show collections kommando. Detta kommando hämtar en lista över samlingar och vyer i den aktuella databasen.

Exempel:

show collections

Resultat:

 employees
 pets
 pettypes
 products
 system.views 

I det här fallet finns det fem resultat. Vi kan inte avgöra bara genom att titta på det, utan pettypes är faktiskt en vy. De andra är samlingar.

system.views samling är en systemsamling som innehåller information om varje vy i databasen.

De faktiska samlingarna som returneras beror på din åtkomstnivå:

  • För användare med den åtkomst som krävs, show collections listar icke-systemsamlingar för databasen.
  • För användare utan den åtkomst som krävs, show collections listar endast de samlingar som användarna har privilegier för.

listCollections Kommando

listCollections administrativt kommando returnerar namnet och alternativen för samlingar och vyer i databasen. Den returnerar informationen i form av ett dokument.

Exempel:

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

Resultat:

{
    "cursor" : {
        "id" : NumberLong(0),
        "ns" : "PetHotel.$cmd.listCollections",
        "firstBatch" : [
            {
                "name" : "employees",
                "type" : "collection"
            },
            {
                "name" : "system.views",
                "type" : "collection"
            },
            {
                "name" : "pets",
                "type" : "collection"
            },
            {
                "name" : "products",
                "type" : "collection"
            },
            {
                "name" : "pettypes",
                "type" : "view"
            }
        ]
    },
    "ok" : 1
}

Dokumentet innehåller information för att skapa en markör till samlingsinformationen.

Den här gången kan vi se vilka som är samlingar och vilka som är vyer.

Vi kan också köra kommandot så här:

db.runCommand( { listCollections: 1.0 } )

Att göra det ger mycket mer information om samlingarna. Se db.getCollectionInfos() exempel nedan för att se data som returneras när den körs på det sättet (db.getCollectionInfos() metoden är ett omslag runt listCollections ).

db.getCollectionNames() Metod

db.getCollectionNames() metod returnerar en array som innehåller namnen på alla samlingar och vyer i den aktuella databasen, eller om den körs med åtkomstkontroll, namnen på samlingarna enligt användarens behörighet.

Exempel:

db.getCollectionNames()

Resultat:

 [ "employees", "pets", "pettypes", "products", "system.views" ] 

db.getCollectionInfos() Metod

db.getCollectionInfos() metod returnerar en uppsättning dokument med insamlings- eller visningsinformation, såsom namn och alternativ, för den aktuella databasen. Resultaten beror på användarens behörighet.

Här är ett exempel på att kalla det utan några argument:

db.getCollectionInfos()

Resultat:

[
    {
        "name" : "employees",
        "type" : "collection",
        "options" : {
            
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("07e89c25-8842-4331-a1a9-96fe0b4745dc")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    },
    {
        "name" : "pets",
        "type" : "collection",
        "options" : {
            
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    },
    {
        "name" : "pettypes",
        "type" : "view",
        "options" : {
            "viewOn" : "pets",
            "pipeline" : [
                {
                    "$project" : {
                        "type" : 1
                    }
                }
            ]
        },
        "info" : {
            "readOnly" : true
        }
    },
    {
        "name" : "products",
        "type" : "collection",
        "options" : {
            "capped" : true,
            "size" : 7500544,
            "max" : 7000
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("cb084959-f374-4f51-bbed-8998c13dcbe2")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    },
    {
        "name" : "system.views",
        "type" : "collection",
        "options" : {
            
        },
        "info" : {
            "readOnly" : false,
            "uuid" : UUID("3f458338-0678-4d0f-a0cf-eacbd43c8cad")
        },
        "idIndex" : {
            "v" : 2,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_"
        }
    }
]

Definitionen av db.getCollectionInfos() går faktiskt så här:

db.getCollectionInfos(filter, nameOnly, authorizedCollections)

Så vi kan använda filter parameter för att filtrera listan med samlingar baserat på ett frågeuttryck. Detta kan tillämpas mot alla fält som returneras av metoden.

Du kan också använda nameOnly parameter för att ange att metoden endast ska returnera namnen på samlingarna och vyerna.

authorizedCollections parameter, när den är inställd på true och används med nameOnly: true , tillåter en användare utan den nödvändiga behörigheten (dvs listCollections-åtgärden på databasen) att köra kommandot när åtkomstkontroll tillämpas. I det här fallet returnerar kommandot endast de samlingar som användaren har privilegier för.

Exempel på användning av db.getCollectionInfos() med dessa parametrar:

db.getCollectionInfos( {}, true, true )

Resultat:

[
    {
        "name" : "employees",
        "type" : "collection"
    },
    {
        "name" : "pets",
        "type" : "collection"
    },
    {
        "name" : "pettypes",
        "type" : "view"
    },
    {
        "name" : "products",
        "type" : "collection"
    },
    {
        "name" : "system.views",
        "type" : "collection"
    }
]

Här är en där jag filtrerar den till ett specifikt namn:

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

Resultat:

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

Och här är vad som händer när jag tar bort de två sista argumenten:

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

Resultat:

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


  1. Hur anger man en beställning eller sortering med C#-drivrutinen för MongoDB?

  2. När ska jag använda en NoSQL-databas istället för en relationsdatabas? Är det okej att använda båda på samma sida?

  3. Architecting for Security:En guide för MongoDB

  4. Redis:fan ut nyhetsflöden i lista eller sorterad uppsättning?