Primeros pasos con MongoDB

    MongoDB es una base de datos de documentos que ofrece una gran escalabilidad y flexibilidad y un modelo de consultas e indexación avanzado basado en NoSQL.
    No existen las BBDD como tal, sino que existen tablas (collections) que guardan documentos (JSON Binario)

    La instalación de MongoDB es muy sencilla y en este caso la realizaremos en un sistema Raspbian, basado en en una Raspberry.

    apt update
    apt upgrade
    apt-get install -y mongodb

    Habilitaremos el servicio y arrancaremos la BBDD

    systemctl enable mongodb
    systemctl start mongodb

    Nos conectaremos a la BBDD por primera vez:

    root@node01:~# mongo
    MongoDB shell version: 2.4.14

    En este punto, le configuraremos una primera password inicial de administración para el usuario “admin”

    use admin;
    db.addUser( { user: "admin",
                  pwd: "123456",
                  roles: [ "userAdminAnyDatabase", "admin" ]
                } )

    Ahora, vamos a ver un sistema CRUD; el acrónimo de Create (Crear), Read (Leer), Update (Actualizar) y Delete (Borrar), básico para su administración.

    Create y Read

    El concepto creación en MongoDB no existe ya que está basado en collections. Es decir, si no hay datos dentro de una BBDD (a diferencia de MySQL/MariaDB/…) esta no se mostrará ni se creará.
    Para poder listar las collections, usaremos el comando:

    Ahora, vamos a usar ( use xxxx ) una collection y le añadiremos datos ( db.user.insert ):

    > use guif
    switched to db guif
    
    > db.user.insert({name: "uno", number: 1})
    > db.user.insert({name: "dos", number: 2})
    > db.user.insert({name: "tres", number: 3})
    > db.user.insert({name: "cuatro", number: 4})
    

    En este punto, podremos ver la BBDD creada ( show dbs ) y los datos insertados ( db.user.find() ):

    > show dbs
    admin   0.0625GB
    guif    0.0625GB
    local   0.03125GB
    test    (empty)
    
    > db.user.find()
    { "_id" : ObjectId("661991ee4fb5cb96992b2e99"), "name" : "uno", "number" : 1 }
    { "_id" : ObjectId("661994606a5049b9bba4f692"), "name" : "dos", "number" : 2 }
    { "_id" : ObjectId("661994606a5049b9bba4f693"), "name" : "tres", "number" : 3 }
    { "_id" : ObjectId("661994606a5049b9bba4f694"), "name" : "cuatro", "number" : "4" }
    

    Read

    Para buscar datos ( db.user.find ), deberemos conocer la colección y la ubicación del dato. En este caso, realizaremos lo sigiuiente:

    > use guif
    switched to db guif
    > db.getCollectionNames()
    [ "system.indexes", "user" ]
    

    > db.user.find( { "name": "tres" } )
    { "_id" : ObjectId("661994606a5049b9bba4f693"), "name" : "tres", "number" : 3 }
    

    Esta búsqueda, equivale a realizar:

    SELECT * FROM user WHERE name = "tres";
    

    Update

    Para actualizar ( db.user.update ) datos, usaremos la siguiente nomenclatura teniendo en cuenta que ya conocemos el dato ( ObjectId: 661994606a5049b9bba4f694 ) previamente.

    > db.user.find()
    { "_id" : ObjectId("661991ee4fb5cb96992b2e99"), "name" : "uno", "number" : 1 }
    { "_id" : ObjectId("661994606a5049b9bba4f692"), "name" : "dos", "number" : 2 }
    { "_id" : ObjectId("661994606a5049b9bba4f693"), "name" : "tres", "number" : 3 }
    { "_id" : ObjectId("661994606a5049b9bba4f694"), "name" : "cuatro", "number" : "4" }
    
    > db.user.update(
    {"_id" : ObjectId("661994606a5049b9bba4f694")},
    {
        "$set": {
            "number":"5"
        }
    })
    
    > db.user.find()
    { "_id" : ObjectId("661991ee4fb5cb96992b2e99"), "name" : "uno", "number" : 1 }
    { "_id" : ObjectId("661994606a5049b9bba4f692"), "name" : "dos", "number" : 2 }
    { "_id" : ObjectId("661994606a5049b9bba4f693"), "name" : "tres", "number" : 3 }
    { "_id" : ObjectId("661994606a5049b9bba4f694"), "name" : "cuatro", "number" : "5" }
    
    

    Como se observa, el ObjectId 661994606a5049b9bba4f694 ha modificado el campo number a 5 cuando antes era 4.

    Delete

    Para eliminar( db.user.remove ) datos, usaremos la siguiente nomenclatura teniendo en cuenta que ya conocemos el dato ( ObjectId: 661994606a5049b9bba4f694 ) previamente.

    > db.user.remove({ "_id":  ObjectId("661994606a5049b9bba4f694")  })
    
    > db.user.find()
    { "_id" : ObjectId("661991ee4fb5cb96992b2e99"), "name" : "uno", "number" : 1 }
    { "_id" : ObjectId("661994606a5049b9bba4f692"), "name" : "dos", "number" : 2 }
    { "_id" : ObjectId("661994606a5049b9bba4f693"), "name" : "tres", "number" : 3 }
    { "_id" : ObjectId("661994606a5049b9bba4f694"), "name" : "cuatro", "number" : "4" }
    
    > db.user.find()
    { "_id" : ObjectId("661991ee4fb5cb96992b2e99"), "name" : "uno", "number" : 1 }
    { "_id" : ObjectId("661994606a5049b9bba4f692"), "name" : "dos", "number" : 2 }
    { "_id" : ObjectId("661994606a5049b9bba4f693"), "name" : "tres", "number" : 3 }
    
    

    Si queremos eliminar mas de uno, tendremos que crear una función:

    > db.user.remove({
        "_id": {
            $in: [
                ObjectId("661994606a5049b9bba4f693"),
                ObjectId("661994606a5049b9bba4f692")
            ]
         }
    }) 
    
    > db.user.find()
    { "_id" : ObjectId("661991ee4fb5cb96992b2e99"), "name" : "uno", "number" : 1 }
    

    Leave a Reply

    Your email address will not be published. Required fields are marked *