我有这样的数据集
{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/