mongodb에서 한 필드 값을 그룹화하고 다른 필드를 정렬하는 방법

크리슈나

다음과 같이 mongodb 문서 구조가 있습니다.

{
        "_id" : NumberLong(366),
        "_class" : "com.cts.adpart.domain.DBData",
        "file" : "xyz",
        "meta" : {
                        "owner" : "user123",
        },
        "curFlag" : true
}
  1. curFlag사실 인 문서를 확인해야 합니다
  2. 한 명의 특정 소유자 n가 파일을 처리 할 수 없으므로 GroupBy특정 사용자가 처리하는 파일의 수 소유자로 표시하고 표시해야합니다.
  3. 마지막으로 각 사용자가 처리하는 파일 수에 따라 큰 번호를 처리하는 사용자를 표시해야합니다. 파일 수.

위의 진술에 대해 아래 코드를 작성했습니다.

Map<String, Object> dbObjIdMap = new HashMap<String, Object>();
dbObjIdMap.put("owner", "$meta.owner");
dbObjIdMap.put("curFlag", "$curFlag");
DBObject groupFields = new BasicDBObject( "_id", new BasicDBObject(dbObjIdMap));

groupFields.put("count", new BasicDBObject( "$sum", 1));
DBObject group = new BasicDBObject("$group", groupFields );

그리고 그것은 다음과 같은 출력을 제공합니다.

{ "_id" : { "owner" : "[email protected]", "curFlag" : true }, "count" : 1 }
{ "_id" : { "owner" : "[email protected]", "curFlag" : false }, "count": 1 }

그러나 나는 curFlag진실한 소유자의 세부 사항만을 원하고 더 많은 수의 파일을 처리하는 소유자를 표시해야합니다.

누구든지 솔루션으로 나를 도울 수 있습니까?

크리 담

요구 사항을 코드로 변환하면 다음 파이프 라인 (mongo 셸 버전)이 제공됩니다.

// 1. Check for documents which have curFlag true
var match = { "$match": { "curFlag": true } };

// 2. GroupBy owner and display the number of files that particular user is handling
var group = {
    "$group": {
        "_id": "$meta.owner",
        "count": { "$sum": 1 }
    }
};

// 3. Display the user who is handling large no. of files
var sort = { "$sort": { "count": -1 } },
    limit = { "$limit": 1 };

// Run pipeline
db.mycollection.aggregate([match, group, sort, limit])

자바 구현 :

public class JavaAggregation {
    public static void main(String args[]) throws UnknownHostException {

        MongoClient mongo = new MongoClient();
        DB db = mongo.getDB("test");

        DBCollection coll = db.getCollection("mycollection");

        // 1. Check for documents which have curFlag true
        DBObject match = new BasicDBObject("$match",
                            new BasicDBObject("curFlag", true)
                        );

        // 2. GroupBy owner and display the number of files per user
        DBObject groupFields = new BasicDBObject( "_id", "$meta.owner");
        groupFields.put("count", new BasicDBObject( "$sum", 1));
        DBObject group = new BasicDBObject("$group", groupFields);

        // 3. Display the user who is handling large no. of files
        DBObject sort = new BasicDBObject("$sort", 
                            new BasicDBObject("count", -1)
                        );
        DbObject limit = new BasicDBObject("$limit", 1);

        List<DBObject> pipeline = Arrays.asList(match, group, sort, limit);

        AggregationOutput output = coll.aggregate(pipeline);

        for (DBObject result : output.results()) {
            System.out.println(result);
        }
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

동일한 값을 가진 문서 수를 계산하고 mongoDB의 다른 필드를 사용하여 그룹화하는 방법은 무엇입니까?

분류에서Dev

액세스 보고서 : 한 필드에서 그룹화하고 다른 필드별로 정렬하는 방법은 무엇입니까?

분류에서Dev

MySQL에서 고유 한 값을 선택하고 다른 필드로 정렬하는 방법

분류에서Dev

다른 필드에서 동일한 값을 그룹화하고 계산합니다.

분류에서Dev

한 필드에서 패턴을 찾고 다른 필드를 추가하는 방법 (같은 행)

분류에서Dev

한 필드 또는 다른 필드에 값이있는 mongo 및 그룹 레코드에서 $ group과 $를 결합하는 방법은 무엇입니까?

분류에서Dev

일부 필드별로 그룹화하고 Oracle에서 다른 필드의 첫 번째 값을 표시하는 방법은 무엇입니까?

분류에서Dev

XQuery를 사용하여 한 필드의 값을 다른 필드로 설정하는 방법

분류에서Dev

Spring MongoDB에서 한 열로 그룹화하고 다른 두 필드의 합계를 얻습니다.

분류에서Dev

solr에서 필드 배열에 대한 다중 값을 정의하는 방법

분류에서Dev

MongoDB 업데이트에서 필드의 값을 동일한 문서의 다른 배열 필드로 푸시하는 방법

분류에서Dev

필드별로 목록을 그룹화하고 linq를 통해 다른 필드의 최소 그룹으로 선택하는 방법은 무엇입니까?

분류에서Dev

한 모델의 필드 값을 다른 모델의 필드에 할당하는 방법은 무엇입니까?

분류에서Dev

다른 필드에서 필드를 추가하는 방법

분류에서Dev

다른 날짜 필드에서 파생 된 한 날짜 필드의 최소 속성을 설정하는 방법

분류에서Dev

각 필드를 사용하여 한 테이블의 값을 다른 테이블에 삽입하는 방법

분류에서Dev

다른 필드의 값을 사용하여 MongoDB 필드를 업데이트하는 방법

분류에서Dev

필드별로 개체를 그룹화하고 다른 개체를 합한 다음 CSV 보고서 생성

분류에서Dev

Ruby를 사용하여 HTTParty 필드에 다른 필드의 값을 추가하는 방법

분류에서Dev

다른 필드의 최대 값에 대한 올바른 이름을 반환하여 그룹화

분류에서Dev

모든 문서에 새 필드를 추가하고 mongodb에서 동일한 문서의 다른 필드 값을 제공하십시오.

분류에서Dev

한 필드 (제품)에는 값이 있지만 다른 필드 (companyName)에는없는 문서를 찾는 방법 ...

분류에서Dev

mongoDb에서 다른 값을 찾고 그룹화하고 개수를 얻는 방법은 무엇입니까?

분류에서Dev

Java에서 한 필드에서 다른 필드로 텍스트 포인터를 이동하는 방법

분류에서Dev

SQL에서 열 값을 합산 할 때 열의 다른 필드를 범주로 그룹화하는 방법은 무엇입니까?

분류에서Dev

MongoDB Compass : 필드의 고유 한 값을 선택하는 방법

분류에서Dev

dataTables에서 고유 한 값을 얻고 JS를 사용하여 총 특정 필드를 합산하는 방법

분류에서Dev

한 텍스트 필드에서 다른 텍스트 필드로 텍스트를 복사하는 방법

분류에서Dev

Solr의 다른 필드에서 한 필드의 데이터를 사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    동일한 값을 가진 문서 수를 계산하고 mongoDB의 다른 필드를 사용하여 그룹화하는 방법은 무엇입니까?

  2. 2

    액세스 보고서 : 한 필드에서 그룹화하고 다른 필드별로 정렬하는 방법은 무엇입니까?

  3. 3

    MySQL에서 고유 한 값을 선택하고 다른 필드로 정렬하는 방법

  4. 4

    다른 필드에서 동일한 값을 그룹화하고 계산합니다.

  5. 5

    한 필드에서 패턴을 찾고 다른 필드를 추가하는 방법 (같은 행)

  6. 6

    한 필드 또는 다른 필드에 값이있는 mongo 및 그룹 레코드에서 $ group과 $를 결합하는 방법은 무엇입니까?

  7. 7

    일부 필드별로 그룹화하고 Oracle에서 다른 필드의 첫 번째 값을 표시하는 방법은 무엇입니까?

  8. 8

    XQuery를 사용하여 한 필드의 값을 다른 필드로 설정하는 방법

  9. 9

    Spring MongoDB에서 한 열로 그룹화하고 다른 두 필드의 합계를 얻습니다.

  10. 10

    solr에서 필드 배열에 대한 다중 값을 정의하는 방법

  11. 11

    MongoDB 업데이트에서 필드의 값을 동일한 문서의 다른 배열 필드로 푸시하는 방법

  12. 12

    필드별로 목록을 그룹화하고 linq를 통해 다른 필드의 최소 그룹으로 선택하는 방법은 무엇입니까?

  13. 13

    한 모델의 필드 값을 다른 모델의 필드에 할당하는 방법은 무엇입니까?

  14. 14

    다른 필드에서 필드를 추가하는 방법

  15. 15

    다른 날짜 필드에서 파생 된 한 날짜 필드의 최소 속성을 설정하는 방법

  16. 16

    각 필드를 사용하여 한 테이블의 값을 다른 테이블에 삽입하는 방법

  17. 17

    다른 필드의 값을 사용하여 MongoDB 필드를 업데이트하는 방법

  18. 18

    필드별로 개체를 그룹화하고 다른 개체를 합한 다음 CSV 보고서 생성

  19. 19

    Ruby를 사용하여 HTTParty 필드에 다른 필드의 값을 추가하는 방법

  20. 20

    다른 필드의 최대 값에 대한 올바른 이름을 반환하여 그룹화

  21. 21

    모든 문서에 새 필드를 추가하고 mongodb에서 동일한 문서의 다른 필드 값을 제공하십시오.

  22. 22

    한 필드 (제품)에는 값이 있지만 다른 필드 (companyName)에는없는 문서를 찾는 방법 ...

  23. 23

    mongoDb에서 다른 값을 찾고 그룹화하고 개수를 얻는 방법은 무엇입니까?

  24. 24

    Java에서 한 필드에서 다른 필드로 텍스트 포인터를 이동하는 방법

  25. 25

    SQL에서 열 값을 합산 할 때 열의 다른 필드를 범주로 그룹화하는 방법은 무엇입니까?

  26. 26

    MongoDB Compass : 필드의 고유 한 값을 선택하는 방법

  27. 27

    dataTables에서 고유 한 값을 얻고 JS를 사용하여 총 특정 필드를 합산하는 방법

  28. 28

    한 텍스트 필드에서 다른 텍스트 필드로 텍스트를 복사하는 방법

  29. 29

    Solr의 다른 필드에서 한 필드의 데이터를 사용하는 방법은 무엇입니까?

뜨겁다태그

보관