MongoDB中找到的文件,并在同一时间排除重复
问题描述:
想象我有这样的文件:MongoDB中找到的文件,并在同一时间排除重复
{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中执行此操作?
答
您需要使用允许访问聚合管道的.aggregate
方法。流程的第一阶段是$match
阶段,您可以过滤掉那些不符合标准的文档。流水线的最后一个阶段是$group
阶段,其中您的文档按team
分组,并使用$first
或$last
累加器运算符返回每个组的第一个或最后一个文档。
db.collection.aggregate([
{ "$match": { "age": { "$gt": 20 } } },
{ "$group": { "_id": "$team", "doc": { "$first": "$$ROOT" } } }
])
“erdem”发生了什么事? – styvane
“巴塞罗那”队(pep)已经有了一个结果。 – R01010010
为什么你选择“pep”而不是“erdem”是你的文档分类还是只想每个团队的第一个文档? – styvane