我有这样的文件:
int test1 = 123456;
string test2 = test1.ToString("N0");
每个用户都有多条记录属于不同的时间。 我的工作是找出前100位用户,它具有最大金额和特定时间范围内的类别大小。
所以我必须{"_id":"xxx","user_id":111,"time":14142342234,"amount":1000,"category":["A","B","C"]}
{"_id":"xxx","user_id":111,"time":14142342234,"amount":1000,"category":["B","C"]}
{"_id":"xxx","user_id":222,"time":14142342234,"amount":1000,"category":["A","B","C"]}
$group
,user_id
金额,但是,如何为每个用户设置类别?如果我想按类别大小排序?
答案 0 :(得分:0)
有趣的学习练习。我已经制作了你可以在下面找到的聚合管道。它是3个阶段的复合物:
我希望它有所帮助:
db.col.aggregate([
{
$match:{
$and:[
{
'time':{
$gt:14142342233
}
},
{
'time':{
$lt:14142342235
}
}
]
}
},
{
$group:{
_id:'$user_id',
total_amount:{
$sum:'$amount'
},
categories:{
$addToSet:'$category'
},
categories_size:{
$sum:{
$size:'$category'
}
}
}
},
{
$sort:{
total_ammount:1,
categories_size:1
}
}])
另外一个建议是:如果你将来要使用MongoDB,这种练习对MongoDB的日常任务非常有用,所以尽量找到课程甚至这个网站等资源继续练习。
此致