sql >> Databáze >  >> NoSQL >> MongoDB

4 způsoby, jak uvést sbírky v databázi MongoDB

Při používání MongoDB existuje více než jeden způsob, jak vypsat kolekce v databázi.

Zde jsou čtyři způsoby, jak získat seznam sbírek v databázi MongoDB:

  • Položka show collections Příkaz
  • Položka listCollections Příkaz
  • Funkce db.getCollectionNames() Metoda
  • Prostředí db.getCollectionInfos() Metoda

Položka show collections Příkaz

Pokud používáte mongo shell, nejrychlejší způsob, jak získat seznam kolekcí, je použít show collections příkaz. Tento příkaz načte seznam kolekcí a pohledů v aktuální databázi.

Příklad:

show collections

Výsledek:

 employees
 pets
 pettypes
 products
 system.views 

V tomto případě existuje pět výsledků. Nemůžeme to zjistit pouhým pohledem, ale pettypes je vlastně pohled. Ostatní jsou sbírky.

Soubor system.views kolekce je systémová kolekce, která obsahuje informace o každém pohledu v databázi.

Skutečné vrácené sbírky budou záviset na vaší úrovni přístupu:

  • U uživatelů s požadovaným přístupem show collections uvádí seznam nesystémových kolekcí pro databázi.
  • U uživatelů bez požadovaného přístupu show collections uvádí pouze kolekce, pro které mají uživatelé oprávnění.

listCollections Příkaz

listCollections administrativní příkaz vrátí název a volby kolekcí a pohledů v databázi. Vrací informace ve formě dokumentu.

Příklad:

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

Výsledek:

{
    "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
}

Dokument obsahuje informace, pomocí kterých lze vytvořit kurzor na informace o kolekci.

Tentokrát se můžeme podívat, které jsou kolekce a které pohledy.

Příkaz můžeme také spustit takto:

db.runCommand( { listCollections: 1.0 } )

Tím získáte mnohem více informací o sbírkách. Viz db.getCollectionInfos() příklad níže, abyste viděli data vrácená při takovém spuštění (db.getCollectionInfos() metoda je obal kolem listCollections ).

db.getCollectionNames() Metoda

db.getCollectionNames() metoda vrací pole obsahující názvy všech kolekcí a pohledů v aktuální databázi, nebo pokud běží s řízením přístupu, názvy kolekcí podle oprávnění uživatele.

Příklad:

db.getCollectionNames()

Výsledek:

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

Prostředí db.getCollectionInfos() Metoda

db.getCollectionInfos() metoda vrací pole dokumentů s informacemi o kolekci nebo zobrazení, jako je název a možnosti, pro aktuální databázi. Výsledky závisí na oprávnění uživatele.

Zde je příklad volání bez argumentů:

db.getCollectionInfos()

Výsledek:

[
    {
        "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_"
        }
    }
]

Definice db.getCollectionInfos() ve skutečnosti to vypadá takto:

db.getCollectionInfos(filter, nameOnly, authorizedCollections)

Můžeme tedy použít filter parametr pro filtrování seznamu kolekcí na základě výrazu dotazu. To lze použít proti libovolnému poli vrácenému metodou.

Můžete také použít nameOnly parametr, který určuje, že metoda by měla vracet pouze názvy kolekcí a pohledů.

authorizedCollections parametr, když je nastaven na true a používá se s nameOnly: true , umožňuje uživateli bez požadovaného oprávnění (tj. akce listCollections v databázi) spustit příkaz, když je vynuceno řízení přístupu. V tomto případě příkaz vrátí pouze ty kolekce, pro které má uživatel oprávnění.

Příklad použití db.getCollectionInfos() s těmito parametry:

db.getCollectionInfos( {}, true, true )

Výsledek:

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

Zde je jeden, kde jej filtruji pouze na konkrétní název:

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

Výsledek:

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

A toto se stane, když odstraním poslední dva argumenty:

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

Výsledek:

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


  1. umístění na žebříčku v mongo s okolními hráči

  2. Jak nakonfigurovat připojení Redis s Rails 4, Puma a Sidekiq?

  3. Proč je výkon Mongodb lepší v Linuxu než ve Windows?

  4. Odstranění database.yml při použití Mongoid v Rails 3.2