복붙노트

[MONGODB] A A MongoDB를 GROUP BY에서 HAVING을 할 수있는 올바른 방법은 무엇입니까?

MONGODB

A A MongoDB를 GROUP BY에서 HAVING을 할 수있는 올바른 방법은 무엇입니까?

무엇 SQL에서이 쿼리 될 것이다 들어 (중복을 찾을 수) :

SELECT userId, name FROM col GROUP BY userId, name HAVING COUNT(*)>1

나는 MongoDB를이 간단한 쿼리를 수행 :

res = db.col.group({key:{userId:true,name:true}, 
                     reduce: function(obj,prev) {prev.count++;}, 
                     initial: {count:0}})

나는 결과 집합을 통해 이동하는 간단한 자바 스크립트 루프를 추가하고 모든 필드를 찾을 수있는 필터를 수행 한 카운트> (1)가, 그래서 같은 :

for (i in res) {if (res[i].count>1) printjson(res[i])};

클라이언트에서 자바 스크립트 코드를 사용하는 것보다이 다른 작업을 수행하는 더 좋은 방법이 있나요? 이 최고 / 간단한 방법 인 경우,이 말,이 질문은 사람을 도움이 될 것입니다 :)

해결법

  1. ==============================

    1.이 질문은 질문과 대답 후, 10gen은 통합 프레임 워크와 MongoDB의 버전 2.2을 발표했다. 이 쿼리를 수행하는 새로운 가장 좋은 방법은 다음과 같습니다

    이 질문은 질문과 대답 후, 10gen은 통합 프레임 워크와 MongoDB의 버전 2.2을 발표했다. 이 쿼리를 수행하는 새로운 가장 좋은 방법은 다음과 같습니다

    db.col.aggregate( [
       { $group: { _id: { userId: "$userId", name: "$name" },
                   count: { $sum: 1 } } },
       { $match: { count: { $gt: 1 } } },
       { $project: { _id: 0, 
                     userId: "$_id.userId", 
                     name: "$_id.name", 
                     count: 1}}
    ] )
    

    10gen은 몽고 집계 변환 차트 가치가 즐겨 찾기에 편리한 SQL을 가지고있다.

  2. from https://stackoverflow.com/questions/5550253/what-is-the-correct-way-to-do-a-having-in-a-mongodb-group-by by cc-by-sa and MIT license