mongodb的aggregate学习之1-pipeline


想知道某个country和province下userid的数量,相同userid算一个

如果这么写,
[
{
		$group:
			{
				"_id": {"country": "$country", "province": "$province"},
				'count': {$sum: 1}
			}
	}
]

返回了
{"result":[{"_id":{"country":"us","province":"shandong"},"count":2},
	{"_id":{"country":"cha","province":"beij"},"count":1},
	{"_id":{"country":"cha","province":"shandong"},"count":3}]
}
从结果来看,计算结果是按照country和province分组了,就是同一个country和province下有几条数据,
不是我们想要的结果,再改
[{
		$group:
			{
				"_id": {"country": "$country", "province": "$province", "uid": "$userid"},
				'count': {$sum: 1}
			}
	}]
返回了
{"result":[{"_id":{"country":"cha","province":"beij","uid":"aaa"},"count":1},
          {"_id":{"country":"us","province":"shandong","uid":"aaa"},"count":2},
          {"_id":{"country":"cha","province":"shandong","uid":"bbb"},"count":2},
          {"_id":{"country":"cha","province":"shandong","uid":"aaa"},"count":1}
]}
再改,
[
	{
		$group:
			{
				"_id": {"country": "$country", "province": "$province", "uid": "$userid"},
				'count': {$sum: 1}
			}
	},
	{
		$group:
			{
				"_id": {"country": "$_id.country", "province": "$_id.province", "uid": "$_id.uid"},
				'count': {$sum: 1}
			}
	}
];
返回了
{"result":[{"_id":{"country":"cha","province":"shandong","uid":"aaa"},"count":1},
         {"_id":{"country":"cha","province":"shandong","uid":"bbb"},"count":1},
         {"_id":{"country":"us","province":"shandong","uid":"aaa"},"count":1},
          {"_id":{"country":"cha","province":"beij","uid":"aaa"},"count":1}
]}
和上一个的结果相比,就是count都变成了1,还不是想要的结果,再改改	
[
	{
		$group:
			{
				"_id": {"country": "$country", "province": "$province", "uid": "$userid"},
				'count': {$sum: 1}
			}
	},
	{
		$group:
			{
				"_id": {"country": "$_id.country", "province": "$_id.province", /*"uid": "$_id.uid"*/},
				'count': {$sum: 1}
			}
	}
];
就是注释了一点点的代码,返回结果
{"result":[{"_id":{"country":"us","province":"shandong"},"count":1},
         {"_id":{"country":"cha","province":"shandong"},"count":2},
          {"_id":{"country":"cha","province":"beij"},"count":1}]}
是想要的结果了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值