如何获取mongo中同一字段的唯一值列表?

时间:2015-09-25 05:12:25

标签: mongodb

我有这样的数据集

     {name: john,
      age:20,
      ....
      }
     {name: sally,
      age: 40
      ...
      }
     {name: sally,
      age: 50
      ...
      }

我可以发出什么mongo查询来获取“name”的每个唯一值。所以简单地说它会返回'john'和'sally'

1 个答案:

答案 0 :(得分:2)

获取" name"的所有独特价值的最简单方法是通过在集合上使用 distinct() 方法,该方法将在单个集合中查询指定字段的不同值,并在数组中返回结果。因此将其用作

var distinctNames = db.collection.distinct("name");
printjson(distinctNames);

示例输出:

[ "sally", "john" ]

然后另一种方式,虽然不像上面那么简单和直接,但是使用聚合框架,您可以使用 $group 管道阶段按名称键对文档进行分组。向下一阶段输出每个不同分组的文档。

cursor 方法返回 aggregate() 后,您可以使用 map() 创建所需最终数组的方法。以下mongo shell演示描述了上述概念:

var distinctNames = db.collection.aggregate([
    {
        "$group": {
            "_id": "$name"
        }
    }
]).map(function (r){ return r._id; });
printjson(distinctNames);

示例输出:

[ "sally", "john" ]