我有这样的数据集

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

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

最佳答案

获取“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" ]

关于mongodb - 如何在mongo中获取同一字段的唯一值列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32775236/

10-13 04:33