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

Bagaimana mengelola database dan koleksi di MongoDB


Pengantar

MongoDB menggunakan struktur berorientasi dokumen untuk menyimpan, mengelola, dan memproses data. Dokumen individu diatur ke dalam koleksi, yang pada gilirannya, disimpan dalam database. Karena skema setiap dokumen tidak ditentukan oleh skema statis, sistem berbasis dokumen menawarkan lebih banyak fleksibilitas daripada sistem relasional yang terdiri dari tabel dan record.

Dalam panduan ini, kita akan berbicara tentang cara membuat dan mengelola struktur yang digunakan MongoDB untuk mengatur data. Kami akan membahas cara membuat dan mengelola database, lalu cara membuat koleksi untuk menyimpan dokumen serupa atau terkait.



Cara melihat database yang ada

Sebelum kita mulai membuat database baru, akan sangat membantu jika kita mengenal beberapa metode yang disediakan MongoDB untuk menemukan informasi tentang database yang ada. Ini dapat membantu Anda memahami status sistem saat ini sebelum Anda mulai membuat perubahan.

Untuk menampilkan semua database pada sistem yang Anda akses, gunakan show dbs metode:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

MongoDB akan merespons dengan nama semua database yang dapat diakses pada sistem serta ringkasan ruang penyimpanan mereka saat ini.

Untuk melihat database mana yang saat ini Anda setel untuk dioperasikan, gunakan db.getName() perintah atau alias singkatannya, db :

db
test

Anda mungkin menemukan bahwa Anda sedang menggunakan database yang tidak terdaftar oleh show dbs memerintah. Ini karena di MongoDB, sampai Anda menulis dokumen pertama ke database, database tidak benar-benar dibuat. Jadi, pada contoh output di atas, shell disiapkan untuk beroperasi pada test database, tetapi karena belum ada, maka tidak akan dikembalikan oleh show dbs perintah.

Untuk beralih ke database yang berbeda, Anda dapat menggunakan use perintah:

use admin
switched to db admin

Untuk mendapatkan beberapa informasi dasar tentang database Anda saat ini, Anda dapat menggunakan db.stats() metode:

db.stats()
{        "db" : "admin",        "collections" : 3,        "views" : 0,        "objects" : 4,        "avgObjSize" : 278.25,        "dataSize" : 1113,        "storageSize" : 86016,        "indexes" : 5,        "indexSize" : 147456,        "totalSize" : 233472,        "scaleFactor" : 1,        "fsUsedSize" : 2876923904,        "fsTotalSize" : 25832407040,        "ok" : 1}

Outputnya menunjukkan informasi tentang jumlah koleksi dalam database, statistik penyimpanan, informasi indeks, dan banyak lagi.



Cara membuat database

MongoDB tidak memiliki perintah eksplisit untuk membuat database baru. Sebagai gantinya, seperti yang disebutkan sebelumnya, Anda harus menunjukkan kepada MongoDB bahwa Anda ingin menulis dokumen baru ke database baru. Ketika dokumen tersebut dibuat, mereka akan secara implisit membuat database.

Untuk mempersiapkan MongoDB untuk menulis ke database baru, keluarkan use perintah untuk beralih ke database yang tidak ada.

Di sini, kita akan mengatur MongoDB untuk membuat database baru bernama playground :

use playground
switched to db playground

Jika Anda memeriksa database Anda saat ini, itu akan mengonfirmasi bahwa playground database saat ini menjadi target perintah terkait database:

db
playground

Namun, seperti yang disebutkan sebelumnya, karena kami belum membuat dokumen apa pun, database itu sendiri belum dibuat:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Untuk benar-benar membuat database baru, kita perlu membuat sesuatu terlebih dahulu.



Cara melihat koleksi dalam database

Di MongoDB, koleksi adalah struktur yang digunakan untuk mengelompokkan dokumen bersama-sama menggunakan sistem kategorisasi apa pun yang ingin Anda terapkan. Mereka tinggal di dalam database dan menyimpan dokumen.

Anda dapat melihat koleksi yang tersedia di database yang sedang Anda gunakan dengan menggunakan show collections metode.

Di sini, kita akan beralih ke admin database yang memiliki beberapa koleksi yang tersedia untuk didemonstrasikan:

use adminshow collections
system.rolessystem.userssystem.version

Atau, Anda dapat mengambil nama koleksi yang sama dalam larik menggunakan db.getCollectionNames() metode:

db.getCollectionNames()
[ "system.roles", "system.users", "system.version" ]

Untuk menampilkan informasi tambahan tentang koleksi di database saat ini, gunakan db.getCollectionInfos() metode:

db.getCollectionInfos()
[        {                "name" : "system.roles",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("776b1fd7-6014-4191-b33c-21350b590627")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        },        {                "name" : "system.users",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("8c824fd1-2150-4413-8fac-0b77d16505e5")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        },        {                "name" : "system.version",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]

Anda juga dapat secara opsional meneruskan dokumen ke perintah untuk memfilter hasil. Misalnya, jika Anda hanya tertarik untuk melihat informasi tentang system.version koleksi, Anda dapat mengetik:

db.getCollectionInfos(    {        name: "system.version"    })
[        {                "name" : "system.version",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]

Untuk memeriksa berapa banyak dokumen yang berisi koleksi, gunakan db.<collection>.count() metode. Misalnya, perintah berikut memeriksa berapa banyak dokumen yang ada di system.users koleksi:

db.system.users.count()
2

Untuk melihat statistik dasar tentang koleksi dalam database saat ini, gunakan db.printCollectionStats() metode:

db.printCollectionStats()

Perintah tersebut mungkin mengeluarkan lebih banyak informasi daripada yang dapat Anda konsumsi dengan mudah, tetapi berisi, tetapi berguna dalam beberapa skenario di mana Anda perlu melihat lebih dalam pada karakteristik koleksi.



Cara membuat koleksi

Untuk membuat koleksi baru, ada dua opsi:Anda dapat membuat koleksi baik secara implisit maupun eksplisit.

Seperti halnya database, MongoDB dapat secara otomatis membuat koleksi saat pertama kali sebuah dokumen ditulis untuk mereka. Metode ini memberitahu MongoDB untuk membuat koleksi baru dengan memasukkan dokumen ke dalam koleksi yang belum ada.

Misalnya, kita dapat mengubah kembali ke playground database yang kami minati sebelumnya. Setelah kita berada di namespace itu, kita bisa menyisipkan dokumen baru ke dalam koleksi dengan memanggil insert.() perintah pada nama yang ingin kita gunakan untuk koleksi baru. Di sini, kita dapat membuat dokumen tentang slide dalam koleksi baru yang disebut equipment :

use playgrounddb.equipment.insert({name: "slide"})
switched to db playgroundWriteResult({ "nInserted" : 1 })

Output menunjukkan bahwa satu dokumen telah ditulis. Perintah di atas melakukan tiga tindakan terpisah. Pertama, MongoDB membuat playground database yang kami rujuk dalam use memerintah. Itu juga menciptakan equipment koleksi dalam database karena kita memanggil insert() perintah pada nama koleksi itu. Terakhir, ia membuat dokumen aktual di dalam equipment koleksi menggunakan input yang kami berikan ke insert() perintah.

Anda dapat memverifikasi bahwa semua tindakan ini telah dilakukan dengan perintah berikut:

show dbsshow collectionsdb.equipment.count()db.equipment.find()

Outputnya harus menunjukkan bahwa playground database sekarang di antara database yang terdaftar, bahwa equipment koleksi terdaftar, bahwa ada satu dokumen di dalam equipment koleksi, dan bahwa dokumen tersebut adalah {name: "slide"} dokumen yang kita masukkan ke dalam perintah.

Opsi lain yang digunakan untuk membuat koleksi adalah secara eksplisit menggunakan db.createCollection() metode. Ini memungkinkan Anda membuat koleksi tanpa menambahkan dokumen apa pun ke dalamnya.

Misalnya, Anda dapat membuat koleksi baru di playground database bernama maintenance.requests dengan mengetik:

db.createCollection("maintenance.requests")
{ "ok" : 1 }

Kami dapat memverifikasi bahwa koleksi baru muncul saat kami memintanya, tetapi tidak memiliki dokumen:

show collectionsdb.maintenance.requests.count()
equipmentmaintenance.requests0

db.createCollection() metode ini terutama berguna karena memungkinkan Anda untuk menentukan berbagai opsi saat pembuatan. Misalnya, kita mungkin ingin membuat sebuah koleksi yang dibatasi , yang merupakan kumpulan yang mempertahankan batas atas pada ukuran yang dialokasikan yang disimpannya dengan menghapus dokumen terlamanya saat penuh.

Untuk membuat koleksi terbatas yang disebut notifications yang dapat menyimpan, paling banyak, 10240 byte informasi, Anda dapat menghubungi:

db.createCollection(    "notifications",    {        capped: true,        size: 10240    })
{ "ok" : 1}

Ini akan membuat notification yang dibatasi koleksi, yang dapat kami verifikasi dengan mengetik:

db.getCollecitonInfos({"options.capped": true})
[        {                "name" : "notifications",                "type" : "collection",                "options" : {                        "capped" : true,                        "size" : 10240                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("dff7bfb0-1cfc-4170-ba60-fbb834ac6925")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]


Cara menghapus koleksi

Untuk menghapus koleksi, Anda dapat menggunakan drop() metode pada koleksi itu sendiri.

Misalnya, untuk menghapus notification . yang dibatasi koleksi yang kami buat, Anda dapat mengetik:

db.notifications.drop()
true

Anda dapat memverifikasi bahwa operasi berhasil dengan mendaftar koleksi di database saat ini lagi:

show collections
equipmentmaintenance.requests


Cara menghapus database

Untuk menghapus seluruh database, panggil db.dropDatabase() memerintah. Ini akan menghapus database saat ini, jadi pastikan Anda berada di database yang benar sebelum menjalankan:

use playgrounddb.dropDatabase()
switched to db playground{ "dropped" : "playground", "ok" : 1 }

Jika Anda memeriksa daftar database yang tersedia, playground tidak lagi ditampilkan:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Karena kita belum beralih ke database baru, MongoDB masih diatur untuk membuat playground database harus kita pilih untuk menambahkan koleksi atau dokumen baru. Anda dapat memverifikasi ini dengan db perintah:

db
playground


Kesimpulan

Membuat dan mengelola database dan koleksi adalah keterampilan penting saat menggunakan MongoDB. Alat organisasi dasar ini memungkinkan Anda untuk mengelompokkan dokumen terkait, menanyakan subset informasi, dan menyiapkan kebijakan otorisasi untuk berbagai jenis data. Memahami cara mengelola struktur ini secara efektif akan memungkinkan Anda mengelola data secara lebih efektif dengan lebih sedikit kejutan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Perbarui objek array bersarang berdasarkan properti di MongoDB

  2. 3 Cara Membuat Indeks di MongoDB

  3. Bagaimana cara menggunakan $elemMatch pada proyeksi agregat?

  4. Kinerja MongoDB:Menjalankan Agregasi MongoDB Pada Sekunder

  5. Bagaimana cara membuat dan meneruskan dokumen bson - Go lang?