【发布时间】:2021-02-04 17:36:40
【问题描述】:
假设我们有一个包含以下文档的集合:
[
{'_id': ..., 'name': 'Type A', 'version': 1, ...},
{'_id': ..., 'name': 'Type B', 'version': 1, ...},
{'_id': ..., 'name': 'Type B', 'version': 2, ...},
{'_id': ..., 'name': 'Type B', 'version': 3, ...},
{'_id': ..., 'name': 'Type C', 'version': 1, ...},
{'_id': ..., 'name': 'Type C', 'version': 2, ...},
{'_id': ..., 'name': 'Type A', 'version': 2, ...},
{'_id': ..., 'name': 'Type B', 'version': 4, ...},
{'_id': ..., 'name': 'Type A', 'version': 3, ...},
{'_id': ..., 'name': 'Type B', 'version': 5, ...},
]
我想返回一个列表,其中包含具有各自名称的最高版本的文档,这样返回看起来像这样,本质上是为每个具有最高版本的不同名称返回 $$ROOT:
[
{'_id': ..., 'name': 'Type A', 'version': 3, ...},
{'_id': ..., 'name': 'Type C', 'version': 2, ...},
{'_id': ..., 'name': 'Type B', 'version': 5, ...},
]
我知道我需要使用聚合管道,使用组排序和限制,但我似乎无法得到我想要实现的目标。
【问题讨论】:
标签: mongodb aggregation-framework pymongo