1. ホーム
  2. mongodb

[解決済み] MongoDB の個別集計

2022-02-10 23:35:20

質問

各州で最もZIPの多い都市を見つけるクエリを作成しています。

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

クエリの集約部分は問題なく動作しているように見えますが、distinctを追加すると空の結果が得られます。

これは、idにstateが入っているからでしょうか?次のようなことは可能でしょうか? distinct("_id.state ?

解決方法は?

Distinctとアグリゲーションフレームワークは相互運用できません。

代わりにあなたが望むのは

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