¿Agile y distribuido?
View more presentations from Gailen Tecnologías.
Reflexiones, artículos, opiniones, recomendaciones, noticias... sobre la tecnología.
{
"name" : "MongoDB",
"type" : "database",
"count" : 1,
"info" : {
x : 203,
y : 102
}
}
info
es un documento embebido dentro del documento principal. La forma de añadir este documento a MongoDB mediante código Java, sería la siguiente:
// Conexion por defecto a localhost por el puerto 27017
Mongo con = new Mongo();
DB bbdd = con.getDB("nombreBaseDatos");
DBCollection col = bbdd.getCollection("nombreColeccion");
BasicDBObject doc = new BasicDBObject();
doc.put("name", "MongoDB");
doc.put("type", "database");
doc.put("count", 1);
BasicDBObject info = new BasicDBObject();
info.put("x", 203);
info.put("y", 102);
doc.put("info", info);
col.insert(doc);
abstract void insert(DBObject arr[])
abstract foid insert(List list)
public final void save(DBOject doc)
"_id"
y el valor correspondiente del documento a sustituir.
BasicDBObject oquery = new BasicDBObject();
oquery.put("name", "MongoDB");
oquery.put("type", "database");
BasicDBObject doc = new BasicDBObject();
doc.put("name", "MongoDB");
doc.put("type", "database");
doc.put("count", 3);
BasicDBObject info = new BasicDBObject();
info.put("x", 255);
info.put("y", 64);
doc.put("info", info);
col.update(oquery, doc);
oquery
), contiene un documento de filtro, en el que se especifican los campos y valores que deben cumplirse para los documentos a modificar. En este caso, las condiciones eran "cuyo 'name' tenga el valor 'MongoDB' Y cuyo 'type' tenga el valor 'database'". Si hubiese más de un documento que se correspondiera con el resultado del filtro, por defecto, se asumiría el primero. count
:
BasicDBObject oquery = new BasicDBObject();
oquery.put("name", "MongoDB");
oquery.put("type", "database");
BasicDBObject doc = new BasicDBObject();
BasicDBObject op = new BasicDBObject();
op.put("count", 4);
doc.put("$set", op);
col.update(oquery, doc);
UPDATE col SET count=4 WHERE name='MongoDB' AND type='database'
public void update(
DBObject query,
DBOject doc)
public abstract void update(
DBObject query,
DBObject doc,
boolean upsert,
boolean multi)
- upsert
: Si se especifica el valor true
, si el filtro se cumple, actualiza los documentos encontrados. Si no se cumple, añade el documento doc
a la colección (como un insert). Si se especifica el valor false
(por defecto), sólo permite actualizar, no insertar.- multi
: Si se especifica el valor true
, si el filtro retorna varios documentos, las actualizaciones se realizarán sobre todos ellos. Si se especifica el valor false
(por defecto), las actualizaciones sólo se realizarán sobre el primer documento retornado.
public void updateMulti(
DBObject query,
DBOject doc)
public abstract void remove(DBObject query)
query
es un filtro que determina qué documentos han de coincidir para la eliminación. Dicha eliminación se aplica a todos los documentos que coincidan con el filtro.
import
de la siguiente manera:import com.mongodb.*;
// Conexion por defecto a localhost por el puerto 27017
Mongo con = new Mongo();
// Conexion al servidor "mongosrv" por el puerto 27017
Mongo con = new Mongo("mongosrv");
// Conexion al servidor "mongosrv" por el puerto 30000
Mongo con = new Mongo("mongosrv", 30000);
DB bbdd = con.getDB("nombreBaseDatos");
DBCollection col = bbdd.getCollection("nombreColeccion");
DBObject doc = col.findOne();
System.out.println(doc);
DBCursor cur = col.find();
while (cur.hasNext())
System.out.println(cur.next());
...
DBCollection col = bbdd.getCollection("Agenda");
// Se crea el documento de filtro
BasicDBObject filtro = new BasicDBObject();
filtro.put("provincia", "Madrid");
DBCursor cur = col.find(filtro);
while (cur.hasNext())
System.out.println(cur.next());
mongo
:db.Agenda.find({"provincia":"Madrid"})
filtro.put("nombre", "Pedro");
filtro.put("provincia", "Madrid");
filtro.put("vehiculo", true);
db.Agenda.find({"nombre":"Madrid", "provincia":"Madrid", "vehiculo":true})
filtro.put("edad", new BasicDBObject("$gte", 18));
filtro.put("edad", new BasicDBObject("$lte", 65));
db.Agenda.find({"edad":{"$gte":18}, "edad":{"$lte":18}})
...
DBCollection col = bbdd.getCollection("Usuarios");
String sUsuario = "usuario";
String sPassword = "password";
String sNombre;
String sIdioma;
Integer iEdad;
BasicDBObject filtro = new BasicDBObject();
filtro.put("usuario", sUsuario);
filtro.put("password", sPassword);
DBObject result = col.findOne(filtro);
if (result==null)
System.out.println("No se encuentra el usuario");
else {
sNombre = (String)result.get("nombre");
sIdioma = (String)result.get("idioma");
sEdad = (Integer)result.get("edad");
}
{"usuario":"usuario", "areas":["Area 1", "Area 2", "Area 3"]}
...
DBCollection col = bbdd.getCollection("Usuarios");
Vector v;
BasicDBObject filtro = new BasicDBObject();
filtro.put("usuario", "usuario");
DBObject result = col.findOne(filtro);
if (result==null)
System.out.println("No se encuentra el usuario");
else {
v = new Vector();
BasicDBList dbl = (BasicDBList)obj.get("areas");
for (int i=0; i<dbl.size(); i++)
v.add((String)dbl.get(i));
}
{"usuario":"usuario", prestado:[{"tipo":"libro", "titulo":"Don Quijote"}, {"tipo":"pelicula", "titulo":"Casablanca"}]}
...
DBCollection col = bbdd.getCollection("Usuarios");
BasicDBObject filtro = new BasicDBObject();
filtro.put("usuario", "usuario");
DBObject result = col.findOne(filtro);
if (result==null)
System.out.println("No se encuentra el usuario");
else {
BasicDBList dbl = (BasicDBList)obj.get("prestado");
for (int i=0; i<dbl.size(); i++) {
DBObject doc = dbl.get(i);
System.out.println("Tipo: "+ (String)doc.get("tipo") + " / Titulo: " + (String)doc.get("titulo"));
}
}