MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

4 начина за изброяване на колекциите в база данни на MongoDB

Когато използвате MongoDB, има повече от един начин за изброяване на колекциите в база данни.

Ето четири начина да получите списък с колекции в база данни на MongoDB:

  • show collections Команда
  • listCollections Команда
  • db.getCollectionNames() Метод
  • db.getCollectionInfos() Метод

show collections Команда

Ако използвате mongo shell, най-бързият начин да получите списък с колекции е да използвате show collections команда. Тази команда извлича списък с колекции и изгледи в текущата база данни.

Пример:

show collections

Резултат:

 employees
 pets
 pettypes
 products
 system.views 

В този случай има пет резултата. Не можем да разберем само като го погледнем, а pettypes всъщност е изглед. Другите са колекции.

system.views колекцията е системна колекция, която съдържа информация за всеки изглед в базата данни.

Действително върнатите колекции ще зависят от вашето ниво на достъп:

  • За потребители с необходимия достъп, show collections изброява несистемните колекции за базата данни.
  • За потребители без необходимия достъп, show collections изброява само колекциите, за които потребителите имат привилегии.

listCollections Команда

listCollections административната команда връща името и опциите на колекциите и изгледите в базата данни. Връща информацията под формата на документ.

Пример:

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

Резултат:

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

Документът съдържа информация, с която да създадете курсор към информацията за колекцията.

Този път можем да видим кои са колекции и кои са изгледи.

Можем също да изпълним командата по следния начин:

db.runCommand( { listCollections: 1.0 } )

Това предоставя много повече информация за колекциите. Вижте db.getCollectionInfos() пример по-долу, за да видите данните, върнати при стартирането им по този начин (db.getCollectionInfos() методът е обвивка около listCollections ).

db.getCollectionNames() Метод

db.getCollectionNames() методът връща масив, съдържащ имената на всички колекции и изгледи в текущата база данни, или ако се изпълнява с контрол на достъпа, имената на колекциите според привилегията на потребителя.

Пример:

db.getCollectionNames()

Резултат:

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

db.getCollectionInfos() Метод

db.getCollectionInfos() метод връща масив от документи с информация за събиране или преглед, като име и опции, за текущата база данни. Резултатите зависят от привилегията на потребителя.

Ето пример за извикването му без никакви аргументи:

db.getCollectionInfos()

Резултат:

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

Дефиницията на db.getCollectionInfos() всъщност става така:

db.getCollectionInfos(filter, nameOnly, authorizedCollections)

Така че можем да използваме filter параметър за филтриране на списъка с колекции въз основа на израз на заявка. Това може да се приложи спрямо всяко поле, върнато от метода.

Можете също да използвате nameOnly параметър, за да посочите, че методът трябва да връща само имената на колекциите и изгледите.

authorizedCollections параметър, когато е зададен на true и се използва с nameOnly: true , позволява на потребител без необходимите привилегии (т.е. действие listCollections в базата данни) да изпълни командата, когато контролът на достъпа е наложен. В този случай командата връща само онези колекции, за които потребителят има привилегии.

Пример за използване на db.getCollectionInfos() със следните параметри:

db.getCollectionInfos( {}, true, true )

Резултат:

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

Ето едно, където го филтрирам само до конкретно име:

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

Резултат:

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

И ето какво се случва, когато премахна последните два аргумента:

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

Резултат:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 3 лесни стъпки за създаване на разчленени клъстери на MongoDB

  2. Подготовка на MongoDB сървър за производство

  3. Задайте програмно преобразувател на MongoDb

  4. Импортирайте данни в MongoDB от JSON файл с помощта на Java

  5. 'process.nextTick(function() { throw err; })' - Undefined не е функция (mongodb/mongoose)