estoy usando conductor Morphia Java para consultar una MongoDB que contiene una colección de la siguiente forma:consultas MongoDB para distintos valores ordenados
MyCollection {
TypeA
TypeB
}
Quiero recuperar todos los valores distintos de Tipo B, que yo utilizando el siguiente código:
DBCollection myCol = getDatastore().getCollection(MyCollection.class);
List typeBs = myCol.distinct("TypeB");
El código anterior funciona como se esperaba, pero la lista de valores distintos no está ordenada.
he experimentado con el siguiente código:
DBCollection myCol = getDatastore().getCollection(MyCollection.class);
DBObject orderBy = new BasicDBObject("$orderby", new BasicDBObject("TypeB", 1);
List typeBs = myCol.distinct("TypeB", orderBy);
Pero en este caso, la lista está vacía, ¿dónde están mis suposiciones mal?
ACTUALIZACIÓN
Mediante el uso de la CLI descubrí que la siguiente consulta devuelve el resultado esperado:
> db.mycollection.find({$query : {}, $orderby : { TypeB : 1 }})
Así que ajustar mi código en consecuencia:
DBCollection myCol = getDatastore().getCollection(MyCollection.class);
BasicDBObject ascending = new BasicDBObject("TypeB", 1);
BasicDBObject filter = new BasicDBObject();
filter.put("$query", new BasicDBObject());
filter.put("$orderby", ascending);
List typeBs = myCol.distinct("TypeB", filter);
Aún resultado contiene 0 entradas!
Lo que realmente hace que me confunde es que la misma consulta funciona si uso .find en lugar de .distinct:
DBCollection myCol = getDatastore().getCollection(MyCollection.class);
BasicDBObject ascending = new BasicDBObject("TypeB", 1);
BasicDBObject filter = new BasicDBObject();
filter.put("$query", new BasicDBObject());
filter.put("$orderby", ascending);
myCol.find(filter).hasNext(); <-- Evaluates to TRUE
Por qué es que el filtro no funciona cuando se utiliza el distinta método- ¿llamada?
Sí, esta es una solución que estoy usando actualmente. Pero creí que debería poder agregar una consulta que ordena el resultado antes de elegir los distintos valores. – aksamit
¿Qué sucede si desea ordenar en el nivel mongodb, en caso de que esté haciendo límite – nightograph