MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

4 Cara Mendaftar Koleksi dalam Basis Data MongoDB

Saat menggunakan MongoDB, ada lebih dari satu cara untuk membuat daftar koleksi dalam database.

Berikut adalah empat cara untuk mendapatkan daftar koleksi dalam database MongoDB:

  • show collections Perintah
  • listCollections Perintah
  • db.getCollectionNames() Metode
  • db.getCollectionInfos() Metode

The show collections Perintah

Jika Anda menggunakan shell mongo, cara tercepat untuk mendapatkan daftar koleksi adalah dengan menggunakan show collections memerintah. Perintah ini mengambil daftar koleksi dan tampilan dalam database saat ini.

Contoh:

show collections

Hasil:

 employees
 pets
 pettypes
 products
 system.views 

Dalam hal ini, ada lima hasil. Kami tidak tahu hanya dengan melihatnya, tetapi pettypes sebenarnya adalah pemandangan. Yang lainnya adalah koleksi.

system.views collection adalah kumpulan sistem yang berisi informasi tentang setiap tampilan dalam database.

Koleksi aktual yang dikembalikan akan bergantung pada tingkat akses Anda:

  • Untuk pengguna dengan akses yang diperlukan, show collections daftar koleksi non-sistem untuk database.
  • Untuk pengguna tanpa akses yang diperlukan, show collections hanya mencantumkan koleksi yang hak istimewanya dimiliki pengguna.

listCollections Perintah

listCollections perintah administratif mengembalikan nama dan opsi koleksi dan tampilan dalam database. Ini mengembalikan informasi dalam bentuk dokumen.

Contoh:

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

Hasil:

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

Dokumen berisi informasi yang dapat digunakan untuk membuat kursor ke informasi koleksi.

Kali ini kita bisa melihat mana yang koleksi dan mana yang dilihat.

Kita juga bisa menjalankan perintah seperti ini:

db.runCommand( { listCollections: 1.0 } )

Melakukan hal itu memberikan lebih banyak informasi tentang koleksi. Lihat db.getCollectionInfos() contoh di bawah ini untuk melihat data yang dikembalikan saat menjalankannya seperti itu (db.getCollectionInfos() metode ini membungkus listCollections ).

The db.getCollectionNames() Metode

db.getCollectionNames() metode mengembalikan array yang berisi nama semua koleksi dan tampilan dalam database saat ini, atau jika dijalankan dengan kontrol akses, nama koleksi sesuai dengan hak istimewa pengguna.

Contoh:

db.getCollectionNames()

Hasil:

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

The db.getCollectionInfos() Metode

db.getCollectionInfos() metode mengembalikan larik dokumen dengan kumpulan atau melihat informasi, seperti nama dan opsi, untuk database saat ini. Hasilnya bergantung pada hak istimewa pengguna.

Berikut ini contoh pemanggilannya tanpa argumen:

db.getCollectionInfos()

Hasil:

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

Definisi db.getCollectionInfos() sebenarnya seperti ini:

db.getCollectionInfos(filter, nameOnly, authorizedCollections)

Jadi kita bisa menggunakan filter parameter untuk memfilter daftar koleksi berdasarkan ekspresi kueri. Ini dapat diterapkan pada bidang apa pun yang dikembalikan oleh metode.

Anda juga dapat menggunakan nameOnly parameter untuk menentukan bahwa metode harus mengembalikan hanya nama koleksi dan tampilan.

authorizedCollections parameter, bila disetel ke true dan digunakan dengan nameOnly: true , memungkinkan pengguna tanpa hak istimewa yang diperlukan (yaitu tindakan listCollections pada database) untuk menjalankan perintah saat kontrol akses diberlakukan. Dalam hal ini, perintah hanya mengembalikan koleksi yang hak istimewanya dimiliki pengguna.

Contoh penggunaan db.getCollectionInfos() dengan parameter berikut:

db.getCollectionInfos( {}, true, true )

Hasil:

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

Inilah tempat saya memfilternya hanya untuk nama tertentu:

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

Hasil:

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

Dan inilah yang terjadi ketika saya menghapus dua argumen terakhir:

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

Hasil:

[
    {
        "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. Spring data mongodb tidak menutup koneksi mongodb

  2. Agregat MongoDB mengisi hari-hari yang hilang

  3. Tidak dapat menemukan modul '../build/Release/bson'] kode:'MODULE_NOT_FOUND' } js-bson:Gagal memuat ekstensi c++ bson, menggunakan versi JS murni

  4. 10 platform hosting MongoDB terbaik

  5. Panduan Pengembang untuk MongoDB Sharding