Couchdb 如何在Cloudant中替换员工的Select distinct(empId)?

Couchdb 如何在Cloudant中替换员工的Select distinct(empId)?,couchdb,cloudant,nosql,Couchdb,Cloudant,Nosql,我需要从Employee表中只获取不同的员工ID。 我的名字是。。emit(doc.empId,1)将给我所有的员工ID,即重复的ID。如何在cloudant中实现同样的效果。如果我使用reduce on值,它是否会返回所有不同的员工ID?您可以使用reduce函数获取不同的员工ID 见重复问题: 如果你对它的价值不感兴趣,它可能只是 映射函数 function (doc) { emit(doc.empId, null); } 还原函数 function (key, values, r

我需要从Employee表中只获取不同的员工ID。
我的名字是。。emit(doc.empId,1)将给我所有的员工ID,即重复的ID。如何在cloudant中实现同样的效果。如果我使用reduce on值,它是否会返回所有不同的员工ID?

您可以使用reduce函数获取不同的员工ID

见重复问题:

如果你对它的价值不感兴趣,它可能只是

映射函数

function (doc) {
    emit(doc.empId, null);
}
还原函数

function (key, values, rereduce) {
    return null;
}
但是,如果需要返回值,可以尝试以下方法

地图

减少

function (keys, values, rereduce) {
  return values[0];
}
但是,您需要确保Reduce函数中的
values
参数是Map函数中发出的所有对象的数组。因此,您需要确定如何最好地

减少到单个标量值。也就是说,一个整数;一串;或者 小的、固定大小的列表或对象,包括聚合值(或 值)从values参数中删除


在我上面的例子中,我只是从
值中选取了第一个条目(我假设所有的发送值都是相同的)。

Hi Barbosa谢谢你的回答,但我需要值,实际上我需要获得完整的文档,如值emit([doc.empId,doc.joiningDate],doc),(需要将加入日期作为过滤器传递)我担心,如果上述解决方案奏效,或者我只需要简单地说“reduce?中的return doc”,请纠正我的错误…请容忍我是新来的cloudant@MayankMike没问题。我不是专家,只是想帮忙。我们曾经都是新人。我更新了答案,以显示一个发射值的示例。您只需要记住,在Reduce中,您需要以某种方式将值合并/压缩/聚合/减少为单个标量值。根据值的不同,您可以确定如何最好地减少。谢谢Barbosa。您的解决方案适合我,但如果文档数量较少,它的效果会非常好。但是如果我有更多的文档(比如文档数为:114655),我会得到错误{“error”:“timeout”,“reason”:“请求无法在合理的时间内处理。”}。文档需要索引,这可能需要一些时间。如果我在视图创建后立即尝试查询它(索引仍在进行中),我就会看到这种行为。
function (keys, values, rereduce) {
  return values[0];
}