MongoDB选择distinct - 返回更多文件

时间:2016-04-26 21:57:04

标签: mongodb mongodb-query aggregation-framework

在MySQL中,您可以查询以下内容:

SELECT DISTINCT Name, Address FROM table WHERE OtherColumn='x';

有没有办法在MongoDB中做同样的事情? 我不能这样做:

db.getCollection('table').distinct('Name',{OtherColumn:'x'})

但它返回一个只包含Name的数组。但不是地址。

如果没有对MongoDB进行2次查询,有没有办法做到这一点?

db.getCollection('table').distinct('Name',{OtherColumn:'x'})
db.getCollection('table').distinct('Address',{OtherColumn:'x'})

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您不想执行两个查询,实际上distinct不适合在此处使用。相反,您需要使用aggregate方法,$group您的文档并使用$addToSet累加器运算符为每个字段返回不同的值。

db.getCollection('table').aggregate([ 
    { "$group": { 
        "_id": null, 
        "Name": { "$addToSet": "$Name",  }, 
        "Address": { "$addToSet": "$Address" } 
    }} 
])