찾다

 >  Q&A  >  본문

group-by - MongoDB对对聚合查询结果进行筛选

想要用java做分组查询,貌似2.4版的java驱动包不支持db.collection.aggregate语法,所以被迫改用db.collection.group()方法。
需求:要用Mongo实现该与SQL的相同作用:
select number from user group by number having count(*) = 1

使用aggregate可以这么实现:

db.user.aggregate(
 {$group:{_id:"$number",total:{$sum:1}}},
 {$match:{total:1}}
);

现在改用group方法:

db.user.group({
  key : {number:1}, 
  cond : {count:1}, 
  initial : {count: 0}, 
  reduce : function Reduce(doc, out) {
   out.count +=1;
  }, 
  finalize : function Finalize(out) {
   return out;
  }
});

查不出结果,如何解决?

漂亮男人漂亮男人2761일 전641

모든 응답(3)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-25 09:06:30

    다른 방법도 시도해봤는데 여전히 안되네요

    으아아아

    그런데 finalize의 return이 유용한가요?

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-25 09:06:30

    2.4는 2010년에 출시되었습니다. 당시 출시된 MongoDB 서버는 더 이상 공식적으로 지원되지 않으므로 업그레이드가 필요합니다.

    회신하다
    0
  • 滿天的星座

    滿天的星座2017-04-25 09:06:30

    집계를 위해서는 버전 3.2 이상을 권장합니다. mongodb를 운영하고 관리하려면 https://github.com/T-baby/Mon...을 사용하는 것이 좋습니다. https://t-baby.gitbooks.io/mo...를 참고하세요. 10분 후에 시작하세요

    회신하다
    0
  • 취소회신하다