如何为每个用户仅限制一个文档

时间:2017-03-28 08:14:25

标签: mongodb

我有一个像这样的mongo集合:

| user_id | log | create_at |

| 1 |   "login" | 1490688500 |
| 1 |   "logout" | 1490688400 |
| 2 |   "view_xxx" | 1490688300 |
| 2 |   "cpd" | 1490688100 |

如何为每个用户只获取一个最新日志,例如

| 1 | "logon" | 1490688500 |
| 2 |  "view_xxx" | 1490688300 |

1 个答案:

答案 0 :(得分:1)

您可以使用mongodb聚合框架,您可以运行以下命令:

db.collection.aggregate(
[
{ '$sort' : { 'created_at' : -1 } },
{ '$group' : { '_id' : '$user_id' , 'log' : { '$last' : '$log' }, 'created_at' : { '$last' : '$created_at' } } }
]
)

docs:

https://docs.mongodb.com/manual/reference/operator/aggregation/last/

https://docs.mongodb.com/manual/reference/operator/aggregation/sort/

https://docs.mongodb.com/manual/reference/operator/aggregation/group/