복붙노트

[MONGODB] MongoDB를 선택 COUNT GROUP BY

MONGODB

MongoDB를 선택 COUNT GROUP BY

나는 MongoDB를 간단한 작업을 수행하는 방법을 알아 내려고와 장난하고

SELECT province, COUNT(*) FROM contest GROUP BY province

그러나 나는 집계 함수를 사용하여 알아낼 수 없습니다. 나는 정말 이상한 그룹 구문을 사용하여 그것을 할 수 있습니다

db.user.group({
    "key": {
        "province": true
    },
    "initial": {
        "count": 0
    },
    "reduce": function(obj, prev) {
        if (true != null) if (true instanceof Array) prev.count += true.length;
        else prev.count++;
    }
});

그러나 집계 함수를 사용하여 쉽게 / 빠른 방법은 무엇입니까?

해결법

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

    1.이 총을 사용하여 할 수있는 쉬운 방법이 될 것입니다 :

    이 총을 사용하여 할 수있는 쉬운 방법이 될 것입니다 :

    db.contest.aggregate([
        {"$group" : {_id:"$province", count:{$sum:1}}}
    ])
    
  2. ==============================

    2.나는 집계 함수의 결과에 따라 몇 가지 추가 작업을해야합니다. 마지막으로 나는 집계 함수와 MongoDB를의 결과에 따라 작업에 대한 몇 가지 해결책을 찾았습니다. 나는 필드 요청, 소스, 상태, requestDate와 컬렉션 요청했습니다.

    나는 집계 함수의 결과에 따라 몇 가지 추가 작업을해야합니다. 마지막으로 나는 집계 함수와 MongoDB를의 결과에 따라 작업에 대한 몇 가지 해결책을 찾았습니다. 나는 필드 요청, 소스, 상태, requestDate와 컬렉션 요청했습니다.

    단일 필드 그룹으로 및 수 :

    db.Request.aggregate([
        {"$group" : {_id:"$source", count:{$sum:1}}}
    ])
    

    여러 필드 그룹으로 및 수 :

    db.Request.aggregate([
        {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}}
    ])
    

    여러 필드 그룹으로 및 정렬 필드를 사용하여와 개수 :

    db.Request.aggregate([
        {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},
        {$sort:{"_id.source":1}}
    ])
    

    여러 필드 그룹으로 및 정렬 카운트를 사용하여와 개수 :

    db.Request.aggregate([
        {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},
        {$sort:{"count":-1}}
    ])
    
  3. ==============================

    3.당신은에 의해 그룹에 여러 열을해야 할 경우,이 모델을 따릅니다. 나는 상태 및 유형별로 카운트를 실시 여기 있습니다 :

    당신은에 의해 그룹에 여러 열을해야 할 경우,이 모델을 따릅니다. 나는 상태 및 유형별로 카운트를 실시 여기 있습니다 :

      db.BusinessProcess.aggregate({
        "$group": {
            _id: {
                status: "$status",
                type: "$type"
            },
            count: {
                $sum: 1
            }
        }
       })
    
  4. ==============================

    4.당신은 당신이 사용할 수있는 그룹화 제한해야 또한 경우 :

    당신은 당신이 사용할 수있는 그룹화 제한해야 또한 경우 :

    db.events.aggregate( 
        {$match: {province: "ON"}},
        {$group: {_id: "$date", number: {$sum: 1}}}  
    )
    
  5. ==============================

    5.MongoDB를 3.4부터, 당신은 $ sortByCount 집계를 사용할 수 있습니다.

    MongoDB를 3.4부터, 당신은 $ sortByCount 집계를 사용할 수 있습니다.

    https://docs.mongodb.com/manual/reference/operator/aggregation/sortByCount/

    예를 들면 :

    db.contest.aggregate([
        { $sortByCount: "$province" }
    ]);
    
  6. ==============================

    6.이 유형의 쿼리는 나를 위해 일한 :

    이 유형의 쿼리는 나를 위해 일한 :

     db.events.aggregate({$group: {_id : "$date", number:  { $sum : 1} }} )
    

    http://docs.mongodb.org/manual/tutorial/aggregation-with-user-preference-data/ 참조

  7. ==============================

    7.나를 위해 일한 몽고 쉘 명령 :

    나를 위해 일한 몽고 쉘 명령 :

    db.getCollection(<collection_name>).aggregate([{"$match": {'<key>': '<value to match>'}}, {"$group": {'_id': {'<group_by_attribute>': "$group_by_attribute"}}}])
    
  8. from https://stackoverflow.com/questions/23116330/mongodb-select-count-group-by by cc-by-sa and MIT license