1 回答

TA贡献1806条经验 获得超5个赞
我在下面的网站上得到了这个答案 https://developer.mongodb.com/community/forums/t/help-writing-aggregation-query-using-pymongo-instead-of-pandas/6290/13
pipeline = [
{
'$sort': { 'code': 1, 'date': 1 }
},
{
'$group': {
'_id': '$code',
'num': { '$last': '$num' }, 'price': { '$last': '$price' }, 'money': { '$last': '$money' },
'code_data': { '$push': { 'n': "$num", 'm': "$money" } }
}
},
{
'$addFields': {
'result': {
'$reduce': {
'input': '$code_data',
'initialValue': { 'hold': 0, 'sum_m': 0, 'total': 0 },
'in': {
'$let': {
'vars': {
'hold_': { '$add': [ '$$this.n', '$$value.hold' ] },
'sum_m_': { '$add': [ '$$this.m', '$$value.sum_m' ] }
},
'in': {
'$cond': [ { '$eq': [ '$$hold_', 0 ] },
{ 'hold': '$$hold_', 'sum_m': 0, 'total': '$$sum_m_' },
{ 'hold': '$$hold_', 'sum_m': '$$sum_m_', 'total': '$$sum_m_' }
]
}
}
}
}
}
}
},
{
'$addFields': { 'code': '$_id', 'hold': '$result.hold', 'total': '$result.total' }
},
{
'$project': { 'code_data': 0, 'result': 0, '_id': 0 }
},
{
'$sort': { 'code': 1 }
}
]
添加回答
举报