Sto usando il driver Morphia Java per interrogare un MongoDB che contiene una raccolta di forma seguente:Query MongoDB per i valori distinti ordinate
MyCollection {
TypeA
TypeB
}
voglio recuperare tutti i valori distinti di TypeB che io con la seguente codice:
DBCollection myCol = getDatastore().getCollection(MyCollection.class);
List typeBs = myCol.distinct("TypeB");
Sopra il codice funziona come previsto, ma l'elenco di valori distinti non è ovviamente ordinato.
ho sperimentato con il seguente codice:
DBCollection myCol = getDatastore().getCollection(MyCollection.class);
DBObject orderBy = new BasicDBObject("$orderby", new BasicDBObject("TypeB", 1);
List typeBs = myCol.distinct("TypeB", orderBy);
Ma in questo caso l'elenco è vuoto, dove sono le mie supposizioni che non va?
UPDATE
Usando il CLI ho scoperto che la seguente query restituito il risultato atteso:
> db.mycollection.find({$query : {}, $orderby : { TypeB : 1 }})
Così ho regolato il mio codice di conseguenza:
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);
Ancora risultati contiene 0 inserimenti!
Ciò che rende veramente mi confuso è che la stessa query funziona se uso .find invece di .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
Perché è che il filtro non funziona quando si utilizza il metodo-distinta chiamata?
Sì, questa è una soluzione che sto attualmente utilizzando. Ma credevo di dover aggiungere una query che ordini il risultato prima di raccogliere i valori distinti. – aksamit
cosa succede se vuoi ordinare a livello di mongodb, nel caso tu stia limitando – nightograph