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中执行此操作?

+0

“erdem”发生了什么事? – styvane

+0

“巴塞罗那”队(pep)已经有了一个结果。 – R01010010

+0

为什么你选择“pep”而不是“erdem”是你的文档分类还是只想每个团队的第一个文档? – styvane

您需要使用允许访问聚合管道的.aggregate方法。流程的第一阶段是$match阶段,您可以过滤掉那些不符合标准的文档。流水线的最后一个阶段是$group阶段,其中您的文档按team分组,并使用$first$last累加器运算符返回每个组的第一个或最后一个文档。

db.collection.aggregate([ 
    { "$match": { "age": { "$gt": 20 } } }, 
    { "$group": { "_id": "$team", "doc": { "$first": "$$ROOT" } } } 
]) 
+0

谢谢,但我尝试它并得到“errmsg”:“例外:FieldPath字段名称可能不以'$'开头。” – R01010010

+0

显示你试过的东西。 – styvane