我的记录很少
userid purchased brand
1 2012-1-21 honda
1 2013-1-1 toyota
1 2013-2-30 mercedez
2 2013-1-1 honda
2 2012-1-1 toyota
2 2013-12-13 mercedez
我希望获得最大购买日期的用户记录。喜欢以下
1 2013-2-30 mercedez
2 2013-12-13 mercedez
我正在尝试使用mongodb聚合框架工作,但是遇到了正确查询的问题。
db.carsrecord.aggregate([{"$match" :{"userid":{"$in":[1,2,3,11]}}} ,
{"$group":{"_id": {"uid":"$userid"},timecreated:{"$max":"$purchased" }}} ])
它返回我正确的隐藏和时间,但没有返回汽车品牌。
"result" : [
{
"_id" : {
"uid" : 1
},
"timecreated" : ISODate("2013-10-03T20:01:45.366Z")
}
],
"ok" : 1
由于
答案 0 :(得分:3)
您必须使用$ first运算符,请检查此问题和我的答案以获得解释:Get last documents with a distinct criteria
正确的代码将是:
db.carsrecord.aggregate(
[{"$match" :{"userid":{"$in":[1,2,3,11]}}} ,
{"$sort": {userid:1, purchased:-1}},
{"$group":{"_id":
{ "uid":"$userid" },
"timecreated":{"$first":"$purchased" },
"brand":{"$first":"$brand"}}}
])