반응형
MongoDB 고유의 집약
각 주에 가장 많은 지퍼가 있는 도시를 찾기 위해 조사를 진행 중입니다.
db.zips.distinct("state", db.zips.aggregate([
{ $group:
{ _id: {
state: "$state",
city: "$city"
},
numberOfzipcodes: {
$sum: 1
}
}
},
{ $sort: {
numberOfzipcodes: -1
}
}
])
)
쿼리의 집약 부분은 정상적으로 동작하고 있는 것처럼 보이지만, 구별을 추가하면 빈 결과가 나타납니다.
ID에 상태가 있기 때문인가요?내가 할 수 있는 건distinct("_id.state?
$addToSet을 집약 프레임워크와 함께 사용하여 개별 개체를 셀 수 있습니다.
예를 들어 다음과 같습니다.
db.collectionName.aggregate([{
$group: {_id: null, uniqueValues: {$addToSet: "$fieldName"}}
}])
또는 null_id 레코드 내의 하위 문서가 아닌 적절한 목록에 고유 값을 가져오기 위해 확장됩니다.
db.collectionName.aggregate([
{ $group: {_id: null, myFieldName: {$addToSet: "$myFieldName"}}},
{ $unwind: "$myFieldName" },
{ $project: { _id: 0 }},
])
구별되는 프레임워크와 집약 프레임워크는 상호 운용할 수 없습니다.
그 대신, 다음과 같은 것이 필요합니다.
db.zips.aggregate([
{$group:{_id:{city:'$city', state:'$state'}, numberOfzipcodes:{$sum:1}}},
{$sort:{numberOfzipcodes:-1}},
{$group:{_id:'$_id.state', city:{$first:'$_id.city'},
numberOfzipcode:{$first:'$numberOfzipcodes'}}}
]);
SQL 쿼리: (그룹별 및 고유 수)
select city,count(distinct(emailId)) from TransactionDetails group by city;
동등한 mongo 쿼리는 다음과 같습니다.
db.TransactionDetails.aggregate([
{$group:{_id:{"CITY" : "$cityName"},uniqueCount: {$addToSet: "$emailId"}}},
{$project:{"CITY":1,uniqueCustomerCount:{$size:"$uniqueCount"}} }
]);
전화하시면 됩니다.$setUniondups도 필터링할 수 있습니다.
{ $project: {Package: 1, deps: {'$setUnion': '$deps.Package'}}}
언급URL : https://stackoverflow.com/questions/16368638/mongodb-distinct-aggregation
반응형
'programing' 카테고리의 다른 글
| 리액트 라우터 네비게이션바 예시 (0) | 2023.04.04 |
|---|---|
| Webpack / Babel / React 빌드 오류: "알 수 없는 옵션: foo/node_modules/react/react.js.아이들" (0) | 2023.04.04 |
| 워드프레스 데이터베이스에 쿼리를 삽입하는 방법 (0) | 2023.04.04 |
| Word press는 ID별로 여러 개의 게시물을 가져옵니다. (0) | 2023.04.04 |
| Angularjs를 사용하려면 node.js가 필요합니까? (0) | 2023.04.04 |