想象一下,我有这些文件:
{name:'pep', team:'barcelona', age:24}
{name:'boris', team:'madrid', age:52}
{name:'erdem', team:'barcelona', age:41}
{name:'robert', team:'barcelona', age:19}
我希望按年龄超过20来过滤此列表,并按团队划分结果,以便我有这样的结果:
{name:'pep', team:'barcelona', age:24}
{name:'boris', team:'madrid', age:52}
我如何在MongoDB中执行此操作?
答案 0 :(得分:0)
您需要使用.aggregate
方法来访问聚合管道。管道中的第一个阶段是$match
阶段,您可以过滤掉那些与您的条件不符的文档。管道中的最后一个阶段是$group
阶段,您的文档按team
分组,并使用$first
或$last
累加器运算符返回每个文档的第一个或最后一个文档基。
db.collection.aggregate([
{ "$match": { "age": { "$gt": 20 } } },
{ "$group": { "_id": "$team", "doc": { "$first": "$$ROOT" } } }
])