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
Publicar un comentario