문서 집합에 대한 각 값의 발생 횟수를 몽고 카운트
다음과 같은 문서가 있습니다.
{
"user": '1'
},
{ "user": '1'
},
{
"user": '2'
},
{
"user": '3'
}
저는 모든 다른 사용자들과 그들의 각각의 숫자들을 순차적으로 정렬할 수 있기를 원합니다.따라서 제 출력은 다음과 같습니다.
{
'1': 2,
'2': 1,
'3': 1
}
Mongo aggregate()로 이 작업을 수행할 수 있다고 생각합니다만, 이 작업을 위한 올바른 흐름을 파악하는 데 많은 어려움을 겪고 있습니다.
집계를 통해 필요한 형식이 아닌 결과를 얻을 수 있습니다.
db.collection.aggregate(
{$group : { _id : '$user', count : {$sum : 1}}}
).result
샘플 문서의 출력은 다음과 같습니다.
"0" : {
"_id" : "2",
"count" : 1
},
"1" : {
"_id" : "3",
"count" : 1
},
"2" : {
"_id" : "1",
"count" : 2
}
2019년 1월에 이 글을 읽는 사람은 누구나 현재 Robo3T에서 수락된 답변이 작동하지 않습니다(반복:pipeline.length - 1
오류).
다음 작업을 수행해야 합니다.
쿼리를 대괄호 집합으로 묶습니다.[]
제거하다.result
끝부터
https://github.com/Studio3T/robomongo/issues/1519#issuecomment-441348191
로보3T에서 저를 위해 작동하는 @disposer의 수락된 답변에 대한 업데이트입니다.
db.getCollection('collectionName').aggregate(
[ {$group : { _id : '$user', count : {$sum : 1}}} ]
)
MongoDb 3.6 이상에서는 연산자와 파이프라인을 사용하여 원하는 결과를 얻을 수 있습니다.다음 Aggregate 파이프라인을 실행해야 합니다.
db.collection.aggregate([
{ "$group": {
"_id": "$user",
"count": { "$sum": 1 }
} },
{ "$sort": { "_id": 1 } },
{ "$group": {
"_id": null,
"counts": {
"$push": {
"k": "$_id",
"v": "$count"
}
}
} },
{ "$replaceRoot": {
"newRoot": { "$arrayToObject": "$counts" }
} }
])
어느 쪽이 산출하는지
{
"1" : 2,
"2" : 1,
"3" : 1
}
아래 집계 쿼리를 사용할 수 있습니다. 또한 결과를 원하는 대로 내림차순으로 정렬합니다.
db.collection.aggregate([
{ $group: { _id: "$user", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])
언급URL : https://stackoverflow.com/questions/28013318/mongo-count-occurrences-of-each-value-for-a-set-of-documents
'programing' 카테고리의 다른 글
PLSQL 하위 쿼리 및 반환 절을 사용하여 에 삽입 (0) | 2023.07.08 |
---|---|
Spring Boot에서 테스트 목적으로 DB 연결을 모의 실행하려면 어떻게 해야 합니까? (0) | 2023.07.08 |
SQL 스크립트 하나로 하위 및 상위 행 삭제 (0) | 2023.07.08 |
MariaDB 10.3에서 행을 열로 동적 변환 (0) | 2023.07.08 |
git: 'lfs'는 git 명령이 불분명하지 않습니다. (0) | 2023.07.08 |