[MONGODB] MongoDB를 선택 COUNT GROUP BY
MONGODBMongoDB를 선택 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.이 총을 사용하여 할 수있는 쉬운 방법이 될 것입니다 :
이 총을 사용하여 할 수있는 쉬운 방법이 될 것입니다 :
db.contest.aggregate([ {"$group" : {_id:"$province", count:{$sum:1}}} ])
-
==============================
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.당신은에 의해 그룹에 여러 열을해야 할 경우,이 모델을 따릅니다. 나는 상태 및 유형별로 카운트를 실시 여기 있습니다 :
당신은에 의해 그룹에 여러 열을해야 할 경우,이 모델을 따릅니다. 나는 상태 및 유형별로 카운트를 실시 여기 있습니다 :
db.BusinessProcess.aggregate({ "$group": { _id: { status: "$status", type: "$type" }, count: { $sum: 1 } } })
-
==============================
4.당신은 당신이 사용할 수있는 그룹화 제한해야 또한 경우 :
당신은 당신이 사용할 수있는 그룹화 제한해야 또한 경우 :
db.events.aggregate( {$match: {province: "ON"}}, {$group: {_id: "$date", number: {$sum: 1}}} )
-
==============================
5.MongoDB를 3.4부터, 당신은 $ sortByCount 집계를 사용할 수 있습니다.
MongoDB를 3.4부터, 당신은 $ sortByCount 집계를 사용할 수 있습니다.
https://docs.mongodb.com/manual/reference/operator/aggregation/sortByCount/
예를 들면 :
db.contest.aggregate([ { $sortByCount: "$province" } ]);
-
==============================
6.이 유형의 쿼리는 나를 위해 일한 :
이 유형의 쿼리는 나를 위해 일한 :
db.events.aggregate({$group: {_id : "$date", number: { $sum : 1} }} )
http://docs.mongodb.org/manual/tutorial/aggregation-with-user-preference-data/ 참조
-
==============================
7.나를 위해 일한 몽고 쉘 명령 :
나를 위해 일한 몽고 쉘 명령 :
db.getCollection(<collection_name>).aggregate([{"$match": {'<key>': '<value to match>'}}, {"$group": {'_id': {'<group_by_attribute>': "$group_by_attribute"}}}])
from https://stackoverflow.com/questions/23116330/mongodb-select-count-group-by by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 유성이 게시 이해 / 구독 (0) | 2019.12.01 |
---|---|
[MONGODB] 기본 HTML보기를 렌더링? (0) | 2019.12.01 |
[MONGODB] MongoDB의 쿼리 도움말 - 하위 오브젝트의 모든 키의 값에 대한 쿼리 (0) | 2019.11.30 |
[MONGODB] MongoDB의에서 수집 기록 내부 배열을 정렬하는 방법 (0) | 2019.11.30 |
[MONGODB] 어떻게 MongoDB를 문서의 _id를 업데이트? (0) | 2019.11.30 |