mongo组合不确定的键值返回

原始数据

{
    "_id": "2022/02/11",
    "prod": {
        "store_coin_3": NumberInt("1")
    }
}

// 2
{
    "_id": "2022/02/11",
    "prod": {
        "store_coin_3": NumberInt("1"),
        "store_coin_1": NumberInt("2")
    }
}


多个对象,prod下面的键不确定,需求是同一个日期统计对应商品的购买数量

以下是完整代碼

db.statics_daily.aggregate([
{
	$group: {
		_id: { $dateToString: { format: '%Y/%m/%d', date: { '$subtract': ['$date', -480 * 60 * 1000] } } },
		prod: {$push: '$first_recharge.USD.prod'}
	}
},
{
    $unwind: "$prod"
},
{
	$project: {
		param: {
			$map: {
				input: {$objectToArray: '$prod'},
				as: 'parameter',
				in: {
					'key': '$$parameter.k',
					'value': '$$parameter.v'
				}
			}
		}
	}
},
{ $unwind: '$param' },
{
	$group: {
		_id: {ts: "$_id",type:"$param.key"},
		num: {$sum: "$param.value"}
	}
},
{
	$group: {
		_id: '$_id.ts',
		keep: {
			$mergeObjects: {
				$arrayToObject: [
					[{ k: '$_id.type', v: '$num' }]
				]
			}
		}
	}
},
{
	$sort: {'_id': -1}
}
])


最终效果

{
    "_id": "2022/02/11",
    "keep": {
        "store_coin_1": NumberInt("2"),
        "store_coin_3": NumberInt("2")
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值