我很少有这样的记录
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" }}} ])
它返回给我正确的 hid 和时间但不返回汽车品牌。
"result" : [
{
"_id" : {
"uid" : 1
},
"timecreated" : ISODate("2013-10-03T20:01:45.366Z")
}
],
"ok" : 1
谢谢
最佳答案
你必须使用 $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"}}}
])
关于具有最大日期的 mongodb 聚合框架查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19181069/