2017-02-06 2 views
-2
db.proxylog.aggregate([{$match:{$and:[{date:"03-10-2016"},{time:$gte:"03:00",$lte:"04:31"}}]}},{$group:{_id:"$ipaddress",totaldatasize: {$sum :"$datasize"}}},{$sort: {totaldatasize:-1}}]); 

이것은 시도한 코드입니다. 하지만 그 오류가 발생했습니다.논리적이고 값을 집계하는 방법은 무엇입니까?

DBObject match1=new BasicDBObject("$match", new BasicDBObject("$and",new BasicDBObject("date","03-10-2016").append("time", new BasicDBObject("$gte","03.00").append("$lte","04.31")))); 
DBObject group1=new BasicDBObject("$group", new BasicDBObject("_id","$ipaddress").append("totaldatasize",new BasicDBObject("$sum","$datasize"))); 
DBObject sort1=new BasicDBObject("$sort",new BasicDBObject("totaldatasize",-1)); 
DBObject limit1=new BasicDBObject("$limit",3); 

AggregationOutput

output=table.aggregate(match1,group1,sort1,limit1); 
for (DBObject result : output.results()) 
{ 
    System.out.println("Output is : "+result); 
} 

이 오류 메시지입니다 :

에 errmsg ":"나쁜 쿼리 BadValue : 및 배열 ","코드 "가 필요 : 16,810

+3

무료 코드 작성 서비스는 아닙니다. 당신은 지금까지 시도한 것을 우리에게 보여 주면서, 정확히 어디에서 붙어 있는지 지적합니다. – GhostCat

+0

DBObject match1 = new BasicDBObject ("$ match", 새 BasicDBObject ("$ gte", 새 BasicDBObject ("날짜", "03-10-2016")) "03.00"). append ("$ lte", "04.31")))); DBObject group1 = 새 BasicDBObject ("$ 그룹", 새 BasicDBObject ("_ id", "$ ipaddress") .append ("totaldatasize", 새 BasicDBObject ("$ sum", "$ datasize"))); DBObject sort1 = 새 BasicDBObject ("$ sort", 새 BasicDBObject ("totaldatasize", - 1)); – Netsap

+0

이것은 시도했지만 작동하지 않는 코드입니다. 나는 어떤 결과도 얻지 못하고있다 – Netsap

답변

0

$match 단계를

단계로 업데이트하십시오.
DBObject match1=new BasicDBObject("$match", new BasicDBObject("$and", Arrays.asList(new BasicDBObject("date","03-10-2016"), new BasicDBObject("time", new BasicDBObject("$gte","03.00").append("$lte","04.31"))))); 
+0

감사합니다. 그것은 효과가있다! – Netsap

0

아래와 같이 코드를 수정하여 작성했습니다.

DBObject match1 = 새 BasicDBObject ("$ match", 새 BasicDBObject ("date", "03-10-2016").) append ("BasicDBObject ("$ gte ","03.00 ")). append ("$ lte", "04.31"))));

관련 문제