Instalar Mongo 4.4 en linux centos y amazon ec2

MongoDB 4.2.11-1

 

  • MONGO_HOST =  127.0.0.1
  • MONGO_PORT =   27017


Mongo debe ser instalado dependiendo del sistema operativo:
En general son 4:

  • server
  • mongos
  • tool
  • shell


Los archivos Centos  dependen de la versión: actual 4.2.11-1
Si se desea  se pude instalar cualquier versión mediante
RPM , si su yum install no funciona,

Para instalación con RPM si se presentan problemas con  YUM
Centos  7         .el7.x86

1. sudo rpm -ivh mongodb-org-server-4.2.11-1.el7.x86_64.rpm
2. sudo rpm -ivh mongodb-org-mongos-4.2.11-1.el7.x86_64.rpm
3. sudo rpm -ivh mongodb-org-shell-4.2.11-1.el7.x86_64.rpm
4. sudo rpm -ivh mongodb-org-tools-4.2.11-1.el7.x86_64.rpm

Amazon EC2 .amz1.x86
1. sudo rpm -ivh mongodb-org-server-4.2.11-1.amzn1.x86_64.rpm
2. sudo rpm -ivh mongodb-org-mongos-4.2.11-1.amzn1.x86_64.rpm
3. sudo rpm -ivh mongodb-org-tools-4.2.11-1.amzn1.x86_64.rpm
4. sudo rpm -ivh mongodb-org-shell-4.2.11-1.amzn1.x86_64.rpm

En centos 7 con: 

actualizar el repositorio yum

#emacs /etc/yum.repos.d/mongodb-org-4.4.repo

[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
# sudo yum install -y mongodb-org

En amazon EC2 : 

Actualizar repositorio yum

# sudo emacs /etc/yum.repos.d/mongodb-org-4.4.repo
[mongodb-org-4.4]
name=MongoDB Repositor
baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

# sudo yum install -y mongodb-org --nogpg

* el parámetro -nogpg se usa para que no verifica el apykey , pues en ocasiones falla porque no

* encuentra la ruta del gpgkey.  

 
Si no existen se deben crear los siguientes directorios

crear carpetas con mkdir:

  • sudo mkdir /var/lib/mongo      (the data directory)
  • sudo mkdir /var/log/mongodb (the log  directory)
  • sudo mkdir /data/db


crear el usuario:
# sudo adduser  mongod

Darle permisos y asignar grupo y propietario a las carpetas creadas

  • sudo chown -R mongod:mongod /var/lib/mongo
  • sudo chown -R mongod:mongod /var/log/mongodb
  • sudo chown -R mongod:mongod /data


Iniciar el demonio de carga de mongo mediante
# sudo systemctl daemon-reload

Usualmente cuando se ejecuta el comando
# sudo mongod
o
# sudo service mongod start

El servidor mongo trata de usar el sistema de notificaciones SNMP y muestra un error (puedo no mostrarlo pero se genera en la consola de errores indicando que mongo no tiene acceso a snmp)

Para eliminar este error modificar el archivo:
#sudo emacs /etc/mongod.conf


Habilitar al final de este archivo la linea.

snmp:disabled

Verificar el estado de su demonio mongodb despues de insertar esta linea

en algunos casos no se requiere porque  ya esta habilitado el puerto snmp.


Ahora puede iniciarse con:

# sudo service mongod start

Verificar el estado de su demonio mongodb despues de insertar esta linea

en algunos casos no se requiere porque  ya esta habilitado el puerto snmp.

el comando :  # sudo systemctl status mongod.service

Nos muestra si la inserción de la linea se snmtp pudo ser ejecutada

si muestra algún error comente la linea y verifique de nuevo.

efectuando de nuevo el comandl

# sudo service mongod start

Si todo quedo correctro el servicio de consola iterativa para administración y pruebas no debe permitir accesar mongo por consola.
# sudo  mongo

Si mongodb muestra un error al activar el servidor puede usar el
comando para lanzar mongo solo en modo de prueba


# /usr/bin/mongod

Si se va usar mongo como parte de jsp:
descargar el drive de mongo.jar e instalarlo en /usr/local/tomcat/lib

Deje instalado MongoSync,MongoCore y Bson 4.02 ultima versión estable.07. April 2020
https://jar-download.com/artifacts/org.mongodb/mongodb-driver-sync


modicar /etc/mongo.conf en la linea
  #bindIp: 127.0.0.1
  por :
  bindIp: 0.0.0.0
para permitir la conexión con Compass el administrador de database.

backup restore mongo
#sudo mongodump    /home/mongoBackup/
#sudo mongorestore /home/mongoBackup/

Uso de mongo algunos comandos sencillos desde la consola iteractiva mongo.

Nota importante:  Mongo es case sensitive en toda su estructura , los nombre de las db, collection, y documents deben ser consitentes simepre si se usa por ejemplo el nombre Prueba y luego PRUEBA y mas tarde prueba en el nombre de una DB o una collection el sistema no muestra ningun error pero crea tes instancias diferencias ya sea de la DB o de la Collection , lo mismo ocurre con los documents, campo1 , CAMPO1 y Campo1 son insertados en la collection de forma independiente. Este es un error sobre si se viene de manjo de DB tipo SQL donde todo es case - no sensitive.

 
Cursor mongo es el signo mayor que.
>
Acceso a la Base de datos urbicloud, notar que como no existe previamente el comando use la crea por primera vez
> use prueba

Creamos el  primer registro en la tabla users.

> db.users.insert({claveusuario:"ADMOR",usuariocontrasena:"admor"})

Si deseamos agregar mas registros a la tabla procedemos de forma similar
> db.users.insert({claveusuario:"SOS",usuariocontrasena:"sos"})
WriteResult({ "nInserted" : 1 })


El resultado de la operación nos indica que hubo una inserción correcta

Ver todos los registros en la base de datos urbicloud tabla users.

> db.users.find()
Nos muestra
El _id, lo genera de forma automática y es único en la tabla, esta es una condición esencial en la creación de tablas, el_id , puede ser ingresado de forma manual pero se debe garantizar prueba.


{ "_id" : ObjectId("5e86326432e9698af62e9199"), "claveusuario" : "ADMOR", "usuariocontrasena" : "admor" }
{ "_id" : ObjectId("5e86338632e9698af62e919a"), "claveusuario" : "SOS", "usuariocontrasena" : "sos" }

Actualizar un registro

> db.users.update({usuariocontrasena:"sos"},{$set:{usuariocontrasena:"sos1"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Observar el uso de keystroke $set para hacer la asignación del valor en la variable. El resultado de la operación nos indica que hizo un cambio.

Encontrar un registro especifico
> db.users.find({claveusuario:"ADMOR"})
regresa:
{ "_id" : ObjectId("5e86326432e9698af62e9199"), "claveusuario" : "ADMOR", "usuariocontrasena" : "admor" }

Consultar información por un campo si existe.

> db.users.find({claveusuario:{$exists:true}})

{ "_id" : ObjectId("5e86326432e9698af62e9199"), "claveusuario" : "ADMOR", "usuariocontrasena" : "admor" }
{ "_id" : ObjectId("5e86338632e9698af62e919a"), "claveusuario" : "SOS", "usuariocontrasena" : "sos1" }

Consultar registros que cumplan la condicion de longitud de un campo

> db.users.find({$where:"this.claveusuario.length<=10"})

{ "_id" : ObjectId("5e86326432e9698af62e9199"), "claveusuario" : "ADMOR", "usuariocontrasena" : "admor" }
{ "_id" : ObjectId("5e86338632e9698af62e919a"), "claveusuario" : "SOS", "usuariocontrasena" : "sos1" }
Remover un registro especifico.

> db.users.remove({claveusuario:"SOS"})

Informa que elimino 1 registro
WriteResult({ "nRemoved" : 1 })


Indexing
Nota: Los indices son persistentes, si se vuelven a crear marca un error de que el indice ya existe, hay que eliminar el anterior antes de proceder a crear uno nuevo.
> db.users.getIndexes()
Informa que tiene un indice por defecto que es _Id, sobre la Base de datos urbiclod
[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "prueba.users"
    },
    {
        "v" : 2,
        "key" : {
            "claveusuario" : 1
        },
        "name" : "claveusuario_1",
        "ns" : "prueba.users"
    }
]
 

Borrar todos los documentos de una collection

> db.users.deleteMany({})


Crear un indice
> db.users.ensureIndex({usuariocontrasena:1})


{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 2,
    "numIndexesAfter" : 3,
    "ok" : 1
}

Eliminar un indice

Borro el anterior para que me deje crear uno nuevo
>   db.users.dropIndex({claveusuario:1})
{
    "ok" : 0,
    "errmsg" : "can't find index with key: { claveusuario: 1.0 }",
    "code" : 27,
    "codeName" : "IndexNotFound"
}

>  db.users.dropIndex({claveusuario:1})


{ "nIndexesWas" : 4, "ok" : 1 }

Crear un indice único.
> db.users.ensureIndex({usuarionombre:1},{unique:true});













Help
Ingresar la palabra clave help

> help
        db.help()                    help on db methods
        db.mycoll.help()             help on collection methods
        rs.help()                    help on replica set methods
        help admin                   administrative help
        help connect                 connecting to a db help
        help keys                    key shortcuts 
Cada ítem del help puede ser consultado de forma independente por ejemplo.

> db.help()
DB methods:
        db.addUser(username, password[, readOnly=false])
        db.auth(username, password)
        db.cloneDatabase(fromhost)
        db.commandHelp(name) returns the help for the command
        db.copyDatabase(fromdb, todb, fromhost)
https://docs.mongodb.com/manual/mongo/

DESCARGAR MONGO JAR
https://jar-download.com/artifacts/org.mongodb/mongodb-driver-sync

https://docs.mongodb.com/manual/tutorial/getting-started/
https://docs.mongodb.com/manual/tutorial/query-documents/

Consulta:
https://examples.javacodegeeks.com/software-development/mongodb/mongodb

CRUD
https://www.journaldev.com/4011/mongodb-java-servlet-web-application-example-tutorial

Mongo Java
https://www.baeldung.com/java-mongodb

Mongo JAR (version 3.12)
https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.mongodb%22%20AND%20a%3A%22mongo-java-driver%22

operadores:
https://docs.mongodb.com/manual/reference/operator/query/


https://kb.objectrocket.com/mongo-db/


db.collection.dataSize()
db.collection.deleteOne()
db.collection.deleteMany()
db.collection.distinct()
db.collection.find()
db.collection.findOne()
db.collection.find(<query>).limit(<number>)
db.collection.find(<query>).close()
db.collection.find(<query>).count()
cursor.hasNext()
cursor.skip(<offset>) //similar a Offset DB
{ campo : {$exist:true }  // permite verificar si un campo existe

$lookup == ? join
https://kb.objectrocket.com/mongo-db/how-to-do-a-join-using-the-mongodb-shell-202

$total ==? sum
https://www.codexpedia.com/database/mongodb-aggregation-queries-vs-sql-queries/

Aggregation == ? group by
https://kb.objectrocket.com/mongo-db/how-to-perform-aggregation-in-mongodb-using-java-385

watchCursor = db.collection.watch();

while (!watchCursor.isExhausted()) {
   if (watchCursor.hasNext()){
      watchCursor.next();
   }
}
https://www.guru99.com/regular-expressions-mongodb.html

String newFileName = "my-image";
File imageFile = new File("https://stackoverflow.com/users/victor/images/image.png");
GridFS gfsPhoto = new GridFS(db, "photo");
GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
gfsFile.setFilename(newFileName);
gfsFile.save();
Mongo DEMO completo CRUD
https://github.com/mongodb/mongo-java-driver/blob/master/driver-sync/src/examples/tour/QuickTour.java
Mongo Aggregate
        Document match = new Document("$match", new Document("suministroDocumento", 9));
        Document group = new Document("$group", new Document("_id", "$" + "suministroPersonalId").append("suministroValor", new Document("$sum", 1)));
        Document sort  = new Document("$sort" , "suministroRegistro");
        Document out   = new Document("$out"  , "salida");

        List<Document> documentList = Arrays.asList(match,group,sort,out)    ;

        MongoCursor<Document> cursor1 = collection.aggregate(documentList);
 

Comentarios

Entradas populares