Mar*_*ugh 4 mongodb aggregation-framework
我这样的记录很少
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
Run Code Online (Sandbox Code Playgroud)
我想获取具有最大购买日期的用户记录。喜欢关注
1 2013-2-30 mercedez
2 2013-12-13 mercedez
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 mongodb 聚合框架工作,但在正确查询时遇到问题。
db.carsrecord.aggregate([{"$match" :{"userid":{"$in":[1,2,3,11]}}} ,
{"$group":{"_id": {"uid":"$userid"},timecreated:{"$max":"$purchased" }}} ])
Run Code Online (Sandbox Code Playgroud)
它会随着时间的推移返回正确的隐藏信息,但不会返回汽车品牌。
"result" : [
{
"_id" : {
"uid" : 1
},
"timecreated" : ISODate("2013-10-03T20:01:45.366Z")
}
],
"ok" : 1
Run Code Online (Sandbox Code Playgroud)
谢谢
您必须使用 $first 运算符,检查这个问题和我的答案以获取解释:获取具有不同条件的最后文档
正确的代码是:
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"}}}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8274 次 |
| 最近记录: |