mongodb的aggregate实例1

好不容易写的,得记录一下,免得找不到了


[
		{
			$match:
				{
					"from": 'h5player',
					'code': {$in: ['init']}
				}
		},
		{
			$group:
				{
					"_id": {
						code: '$code',
						'cost': {
							$switch: {
								branches: [
									{
										case: {
											$and: [{$gt: ["$cost", 0]}, {$lt: ["$cost", 100]}]
										},
										then: "0-100"
									},
									{
										case: {
											$and: [{$gt: ["$cost", 100]}, {$lt: ["$cost", 200]}]
										},
										then: "100-200"
									},
									{
										case: {
											$and: [{$gt: ["$cost", 200]}, {$lt: ["$cost", 300]}]
										},
										then: "200-300"
									},
									{
										case: {
											$and: [{$gt: ["$cost", 300]}, {$lt: ["$cost", 500]}]
										},
										then: "300-500"
									},
									{
										case: {
											$and: [{$gt: ["$cost", 500]}, {$lt: ["$cost", 1000]}]
										},
										then: "500-1000"
									},

								],
								default: '1000-'
							}
						}
					},
					'sum': {$sum: 1},
				}
		},
		{
			$project: {
				"_id": 0, "code": "$_id.code", "sum": 1, jcost: "$_id.cost"
			}
		}
	];

先进行match,相当于进行了一次过滤,之后进行分组,分组的时候的关键字是code和cost,而cost是根据不同的数值的范围进行划分的,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值