Where, Order By , y Limit en Morphia

Entrada corta😀

Necesitaba hacer algo como un

SELECT codigo FROM producto WHERE categoria = 70 ORDER BY DESC LIMIT 1; 

en MongoDB… aunque en realidad solo necesitaba tomar el último valor ingresado de cierto campo (un MAX).

Metiendo mano en la shell de Mongo llegué a esto:

db.Producto.find({Categoria: 70}).sort({Codigo: -1}).limit(1)

y me dio lo que necesitaba:

{ "_id" : ObjectId("5053ea7f8daa5eaa5cdc6cd9"), "className" : "Modelos.Producto"
, "Nombre" : "Bloqueador Solar", "Codigo" : 7, "Categoria" : 70, "Stock" : 0, "PPM" : 0 }

Ahora el tema era pasarlo a Java (siempre usando Morphia). Leyendo la documentación oficial, llegué a esto:

Morphia M = new Morphia();
Datastore DS = M.createDatastore(this.Connection, this.BD);
Query q = DS.createQuery(Producto.class).
     field("Categoria").equal(categoria).
     order("-Codigo").
     limit(1);
Producto P = (Producto) q.get();
return String.valueOf(P.getCodigo()); 

Las primeras líneas las conocemos. En la tercera creamos el objeto que va contener la respuesta. Definimos collection-Clase vamos a usar.

Damos el key del criterio, cómo lo vamos a ordenar, y cuantos registros vamos a obtener.

Como estamos pidiendo un solo registro, lo guardamos en el objeto P directamente con un .get() . Si tuviéramos más registros, lo hacemos un asList().

Por último, devuelvo lo que quiero usar (en este caso el código).

Espero les sirva😀

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en Java, MongoDB, Tips. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s