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
PerintahlistCollections
Perintahdb.getCollectionNames()
Metodedb.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_" } } ]