복붙노트

[MONGODB] MongoDB를 별개의 집계

MONGODB

MongoDB를 별개의 집계

나는 각 상태에 가장 지퍼와 도시를 찾는 쿼리에서 일하고 있어요 :

db.zips.distinct("state", db.zips.aggregate([ {$group:{_id:{state:"$state", city:"$city"},numberOfzipcodes:{$sum:1}}}, {$sort:{numberOfzipcodes:-1}}]))

쿼리의 집계 부분은 잘 작동 것 같다,하지만 난 뚜렷한를 추가 할 때 나는 빈 결과를 얻을.

나는 ID에 상태를 가지고 있기 때문이다? 나는 별개의 ( "_ id.state 같은 일을 할 수 있습니까?

해결법

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

    1.고유하고 통합 프레임 워크는 상호 작동하지 않습니다.

    고유하고 통합 프레임 워크는 상호 작동하지 않습니다.

    대신 당신은 원하는 :

    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'}}}
    ]);
    
  2. ==============================

    2.당신은 다른 오브젝트를 계산 집계 프레임 워크 $ addToSet를 사용할 수 있습니다.

    당신은 다른 오브젝트를 계산 집계 프레임 워크 $ addToSet를 사용할 수 있습니다.

    예를 들면 :

    db.collectionName.aggregate([{
        $group: {_id: null, uniqueValues: {$addToSet: "$fieldName"}}
    }])
    
  3. ==============================

    3.SQL 쿼리 : (별개의 계산 및 그룹화)

    SQL 쿼리 : (별개의 계산 및 그룹화)

    select city,count(distinct(emailId)) from TransactionDetails group by city;
    

    등가 몽고의 쿼리는 다음과 같을 것이다 :

    db.TransactionDetails.aggregate([ 
    {$group:{_id:{"CITY" : "$cityName"},uniqueCount: {$addToSet: "$emailId"}}},
    {$project:{"CITY":1,uniqueCustomerCount:{$size:"$uniqueCount"}} } 
    ]);
    
  4. ==============================

    4.또한 속는 필터 단일 배열에 $ setUnion를 호출 할 수 있습니다 :

    또한 속는 필터 단일 배열에 $ setUnion를 호출 할 수 있습니다 :

    { $project: {Package: 1, deps: {'$setUnion': '$deps.Package'}}}
    
  5. from https://stackoverflow.com/questions/16368638/mongodb-distinct-aggregation by cc-by-sa and MIT license