我有一個集合:如何按morphia中的數量進行分組?
public class Message {
@Id
ObjectId id;
String group;
}
我需要計算每組的消息的數量。是否有可能避免遍歷整個集合?
我有一個集合:如何按morphia中的數量進行分組?
public class Message {
@Id
ObjectId id;
String group;
}
我需要計算每組的消息的數量。是否有可能避免遍歷整個集合?
這裏,在這個工作實例中,MessageEntry代表信息和LINF代表組:
DBCollection myColl = ds.getCollection(MessageEntry.class);
DBObject key = new BasicDBObject("linf",true);
DBObject initial = new BasicDBObject("cnt",true);
String reduce = "function(item,prev){prev.cnt+=1;}";
DBObject group = myColl.group(key, null, initial, reduce);
HashMap<String,Long> ret = new HashMap();
for(String k:group.keySet()){
BasicDBObject l = (BasicDBObject) group.get(k);
DBRef dbRef = (DBRef) l.get("linf");
Linf linf = ds.get(Linf.class,dbRef.getId());
Double cnt = (Double) l.get("cnt");
ret.put(linf.limad,cnt.longValue());
}
return ret;
mongo中的查詢語言,因此morphia並不真的支持這一點。但是,彙總框架確實是個好消息。 (幾乎)壞消息是morphia不支持聚合。我實際上有支持建立在一個分支上,但它依賴於java驅動程序的2.12版本。這裏是問題跟蹤此功能:https://github.com/mongodb/morphia/issues/449
對不起,愚蠢的問題。那麼是否有可能通過請求mongodb而無需在java中進行迭代?我在哪裏可以看到示例?感謝名單。 –