sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo administrar bases de datos y colecciones en MongoDB


Introducción

MongoDB utiliza estructuras orientadas a documentos para almacenar, administrar y procesar datos. Los documentos individuales se organizan en colecciones, que a su vez se almacenan en bases de datos. Debido a que el esquema de cada documento no está definido por un esquema estático, los sistemas basados ​​en documentos ofrecen más flexibilidad que los sistemas relacionales que se componen de tablas y registros.

En esta guía, hablaremos sobre cómo crear y administrar las estructuras que usa MongoDB para organizar los datos. Cubriremos cómo crear y administrar bases de datos y luego cómo hacer colecciones para guardar documentos similares o relacionados.



Cómo ver bases de datos existentes

Antes de comenzar a crear nuevas bases de datos, es útil familiarizarse con algunos de los métodos que proporciona MongoDB para encontrar información sobre las bases de datos existentes. Esto puede ayudarlo a comprender el estado actual del sistema antes de comenzar a realizar cambios.

Para mostrar todas las bases de datos en el sistema al que tiene acceso, use el show dbs método:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

MongoDB responderá con los nombres de todas las bases de datos accesibles en el sistema, así como un resumen de su espacio de almacenamiento actual.

Para ver en qué base de datos está configurado actualmente para operar, use db.getName() comando o su alias abreviado, db :

db
test

Es posible que descubra que actualmente está utilizando una base de datos que no figura en la lista de show dbs dominio. Esto se debe a que en MongoDB, hasta que escribe el primer documento en la base de datos, la base de datos no se crea realmente. Entonces, en el resultado del ejemplo anterior, el shell está preparado para operar en una test base de datos, pero como aún no existe, no será devuelta por show dbs comando.

Para cambiar a una base de datos diferente, puede usar use comando:

use admin
switched to db admin

Para obtener información básica sobre su base de datos actual, puede usar db.stats() método:

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}

El resultado muestra información sobre la cantidad de colecciones dentro de la base de datos, estadísticas de almacenamiento, información de índice y más.



Cómo crear bases de datos

MongoDB no tiene un comando explícito para crear una nueva base de datos. En cambio, como se mencionó anteriormente, debe indicarle a MongoDB que desea escribir nuevos documentos en una nueva base de datos. Cuando se crean esos documentos, implícitamente crearán la base de datos.

Para preparar MongoDB para escribir en una nueva base de datos, emita use comando para cambiar a una base de datos inexistente.

Aquí, configuraremos MongoDB para crear una nueva base de datos llamada playground :

use playground
switched to db playground

Si revisa su base de datos actual, confirmará que el playground la base de datos es actualmente el objetivo de los comandos relacionados con la base de datos:

db
playground

Sin embargo, como se mencionó anteriormente, dado que aún no hemos creado ningún documento, la base de datos en sí aún no se ha creado:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Para crear realmente la nueva base de datos, primero necesitaremos crear algo.



Cómo ver las colecciones en una base de datos

En MongoDB, colecciones son estructuras utilizadas para agrupar documentos utilizando cualquier sistema de categorización que desee implementar. Viven dentro de bases de datos y almacenan documentos.

Puede ver las colecciones disponibles en la base de datos que está utilizando actualmente utilizando show collections método.

Aquí, cambiaremos al admin base de datos que tiene algunas colecciones disponibles para demostrar:

use adminshow collections
system.rolessystem.userssystem.version

Alternativamente, puede recuperar los mismos nombres de colección en una matriz usando db.getCollectionNames() método:

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

Para mostrar información adicional sobre las colecciones en la base de datos actual, use db.getCollectionInfos() método:

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

Opcionalmente, también puede pasar un documento al comando para filtrar los resultados. Por ejemplo, si solo está interesado en ver la información sobre el system.version colección, puede escribir:

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

Para verificar cuántos documentos contiene una colección, use db.<collection>.count() método. Por ejemplo, el siguiente comando verifica cuántos documentos hay en el system.users colección:

db.system.users.count()
2

Para ver estadísticas básicas sobre las colecciones en la base de datos actual, use db.printCollectionStats() método:

db.printCollectionStats()

El comando puede generar más información de la que puede consumir fácilmente, pero contiene, pero es útil en algunos escenarios en los que necesita analizar en profundidad las características de una colección.



Cómo crear colecciones

Para crear una nueva colección, hay dos opciones:puede crear colecciones de forma implícita o explícita.

Al igual que con las bases de datos, MongoDB puede crear colecciones automáticamente la primera vez que se escribe un documento en ellas. Este método le dice a MongoDB que cree una nueva colección insertando un documento en una colección que aún no existe.

Por ejemplo, podemos volver a cambiar al playground base de datos en la que estábamos interesados ​​anteriormente. Una vez que estemos en ese espacio de nombres, podemos insertar un nuevo documento en una colección llamando a insert.() Comando sobre el nombre que nos gustaría usar para la nueva colección. Aquí, podemos crear un documento sobre una diapositiva en una nueva colección llamada equipment :

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

El resultado indica que se escribió un documento. El comando anterior realizó tres acciones separadas. Primero, MongoDB creó el playground base de datos a la que habíamos hecho referencia en nuestro use dominio. También creó el equipment colección dentro de la base de datos ya que llamamos al insert() comando en ese nombre de colección. Finalmente, crea el documento real dentro del equipment colección utilizando la entrada que proporcionamos a insert() comando.

Puede verificar que todas estas acciones se han realizado con los siguientes comandos:

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

El resultado debe mostrar que el playground base de datos se encuentra ahora entre las bases de datos enumeradas, que el equipment colección está en la lista, que hay un documento dentro del equipement colección, y que el documento es el {name: "slide"} documento que insertamos en el comando.

La otra opción para usar para crear colecciones es usar explícitamente db.createCollection() método. Esto le permite crear colecciones sin agregarles ningún documento.

Por ejemplo, puedes crear una nueva colección en el playground base de datos llamada maintenance.requests escribiendo:

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

Podemos comprobar que la nueva colección aparece cuando la consultamos, pero que no tiene documentos:

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

db.createCollection() El método es principalmente útil porque le permite especificar varias opciones al momento de la creación. Por ejemplo, es posible que deseemos crear una colección limitada , que es una colección que mantiene un límite superior en su tamaño asignado que almacena al eliminar su documento más antiguo cuando está lleno.

Para crear una colección limitada llamada notifications que puede almacenar, como máximo, 10240 bytes de información, podrías llamar:

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

Esto creará una notification limitada colección, que podemos verificar escribiendo:

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


Cómo eliminar colecciones

Para eliminar una colección, puede usar drop() en la colección misma.

Por ejemplo, para quitar las notifications limitadas colección que creamos, puede escribir:

db.notifications.drop()
true

Puede verificar que la operación se haya realizado correctamente enumerando las colecciones en la base de datos actual nuevamente:

show collections
equipmentmaintenance.requests


Cómo eliminar bases de datos

Para eliminar una base de datos completa, llame a db.dropDatabase() dominio. Esto eliminará la base de datos actual, así que asegúrese de estar en la base de datos correcta antes de ejecutar:

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

Si revisa la lista de bases de datos disponibles, playground ya no se muestra:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Dado que aún no hemos cambiado a una nueva base de datos, MongoDB todavía está configurado para crear un playground base de datos si elegimos agregar una nueva colección o documento. Puede verificar esto con el db comando:

db
playground


Conclusión

Crear y administrar bases de datos y colecciones es una habilidad importante cuando se utiliza MongoDB. Estas herramientas organizativas básicas le permiten agrupar documentos relacionados, consultar subconjuntos de información y configurar políticas de autorización para diferentes tipos de datos. Familiarizarse con la forma de administrar de manera efectiva estas estructuras le permitirá administrar sus datos de manera más efectiva y con menos sorpresas.