자바 동작 mongoDB 실행 그룹 by
Mongo 의 group by 용법 에 대한 실례 가 있 습 니 다. 오래 잊 어 버 리 지 않도록 쓰 십시오.
구체 적 인 요 구 는 한 동안 소비 한 회원 의 총 수 를 조회 하고 무 거 운 것 을 요구 하 는 것 이다.
대개
{user_id,
......,
consume{
....,
time,
....
},
...}
검색 결과 집합 은?
> db.consume.find({"consume.time.":{$gt:"0"}},{_id:0,user_id:1,"consume.time":1}).sort({"consuem.time":1}).limit(5);
{ "consume" : { "time" : "1314583316" }, "user_id" : "34800268" }
{ "consume" : { "time" : "1314583319" }, "user_id" : "67400937" }
{ "consume" : { "time" : "1314583321" }, "user_id" : "130041511" }
{ "consume" : { "time" : "1314583328" }, "user_id" : "4450046611" }
{ "consume" : { "time" : "1314583336" }, "user_id" : "20036266" }
mongo 를 실행 하 는 SQL 은 대략
db.consume.group({ key:{"user_id":true} ,cond:{"consume.time":{$gt:"1314583316",$lt:"1314583336"}},initial:{co:0},reduce:function(oj,pr){pr.co++} } )
자바 코드
DBCollection userSColl = MongoDBUtils.getDBCollection("consume");
BasicDBObject key = new BasicDBObject("user_id",true);
BasicDBObject cond = new BasicDBObject("consume.time",new BasicDBObject("$gt","1314583316").append("$lt", "1314583336"));
BasicDBObject initial = new BasicDBObject("cou",0);
String reduce = "function(obj,pre){pre.cou++}";
BasicDBList returnList = (BasicDBList)userSColl.group(key, cond, initial, reduce);
그리고 사이즈 한번 가 볼 게 요.
몬 고 doc 를 봤 는데 또 있어 요.
List list = userSColl.distinct("user_id", new BasicDBObject("consume.time",new BasicDBObject("$gt","1314583316").append("$lt", "1314583336")));
하지만 직접 count 를 구 하 는 방법 이 있 는 지 는 모 르 겠 지만, 연구 해 보 세 요.
참고 문 서 는:http://www.mongodb.org/display/DOCS/Aggregation
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.