我要求从Employee表中只获取不同的Employee ID。 我的发射是.. emit(doc.empId,1),会给我所有的员工ID,也就是重复一个。我如何在cloudant中实现同样的目标。如果我使用reduce on value,它会将所有不同的员工ID归还给我吗?
答案 0 :(得分:0)
您可以使用Reduce功能获取不同的员工ID。
请参阅重复的问题:How do I do the SQL equivalent of "DISTINCT" in CouchDB?
如果您对价值不感兴趣,可以简单地
地图功能
<solver>
...
<constructionHeuristic/>
<localSearch>
<termination>...stepCountLimit or calculateCountLimit?...</termination>
</localSearch>
<constructionHeuristic/>
<localSearch>
<termination>...stepCountLimit or calculateCountLimit?...</termination>
</localSearch>
<constructionHeuristic/>
<localSearch>
<termination>...stepCountLimit or calculateCountLimit?...</termination>
</localSearch>
</solver>
减少功能
function (doc) {
emit(doc.empId, null);
}
但是,如果你需要返回值,你可以试试这样的
地图
function (key, values, rereduce) {
return null;
}
减少
function (doc) {
emit([doc.empId, doc.joiningDate], {"companyId": doc.companyId, "dept": doc.dept});
}
但是,您需要确保Reduce函数中的function (keys, values, rereduce) {
return values[0];
}
参数是Map函数中发出的所有对象的数组。因此,您需要确定最佳方式
减少到单个标量值。也就是说,一个整数;一串;或者a 小的,固定大小的列表或包含聚合值的对象(或 来自values参数的值。
来自http://guide.couchdb.org/draft/cookbook.html
在我的例子中,上面我只是从values
获取第一个条目(我假设所有发射值都相同)。