如何从Cloudant中的Employee中选择distinct(empId)?

时间:2017-05-29 14:36:42

标签: couchdb cloudant nosql

我要求从Employee表中只获取不同的Employee ID。 我的发射是.. emit(doc.empId,1),会给我所有的员工ID,也就是重复一个。我如何在cloudant中实现同样的目标。如果我使用reduce on value,它会将所有不同的员工ID归还给我吗?

1 个答案:

答案 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获取第一个条目(我假设所有发射值都相同)。