Mongodb查找文档并同时排除重复项

时间:2016-05-13 21:47:10

标签: mongodb find distinct where

想象一下,我有这些文件:

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

1 个答案:

答案 0 :(得分:0)

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

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