我正在学习mongoDB的作业,我正在研究查找每个州拉链最多的城市
db.zips.distinct("state", db.zips.aggregate([ {$group:{_id:{state:"$state", city:"$city"},numberOfzipcodes:{$sum:1}}}, {$sort:{numberOfzipcodes:-1}}]))
Run Code Online (Sandbox Code Playgroud)
查询的聚合部分似乎工作正常,但当我添加不同的我得到一个空结果.这是因为我在身份证上有州吗?我可以做一些像distinct("_ id.state ??或者你有其他任何提示吗?
谢谢!
dam*_*am1 79
您可以将$ addToSet与聚合框架一起使用来计算不同的对象.
例如:
db.collectionName.aggregate([{
$group: {_id: null, uniqueValues: {$addToSet: "$fieldName"}}
}])
Run Code Online (Sandbox Code Playgroud)
Sam*_*aye 40
区别和聚合框架不可互操作.
相反,你只需要:
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'}}}
]);
Run Code Online (Sandbox Code Playgroud)
小智 17
SQL查询:(分组和不同的计数)
select city,count(distinct(emailId)) from TransactionDetails group by city;
Run Code Online (Sandbox Code Playgroud)
等效的mongo查询看起来像这样:
db.TransactionDetails.aggregate([
{$group:{_id:{"CITY" : "$cityName"},uniqueCount: {$addToSet: "$emailId"}}},
{$project:{"CITY":1,uniqueCustomerCount:{$size:"$uniqueCount"}} }
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74865 次 |
| 最近记录: |