CouchDB 查看 SUM 和 GROUP BY 的等效项

标签 couchdb

我有多个 CouchDB 文档,表示带有属性 userId 和标签的时间戳(用户可以有 n 个时间戳并为每个时间戳分配一个标签)。我想通过特定的 userId 查询 CouchDB 并获取用户使用过的标签的排序列表(按出现次数排序)。

View 会是什么样子?

如果我想获取按出现次数排序的所有标签的列表(无论来自哪个用户),或者如果我假设只有具有相同 userId 的文档,我会这样做:

map :

function(doc) {
  if(doc.tag) emit(doc.tag, 1); 
}

减少:

function(keys, values) {
  return sum(values);
}

但是如何对结果进行分组,以便可以按特定的 userId 过滤查询?

最佳答案

回答我自己的问题。

似乎 CouchDB 支持数组作为键。考虑到这一点,事情就非常简单了:

map :

function(doc) {
  if(doc.tag) emit([doc.userId, doc.tag], 1); 
}

减少:

function(keys, values) {
  return sum(values);
}

然后结果按 userId 和标签排序。

关于CouchDB 查看 SUM 和 GROUP BY 的等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5511810/

相关文章:

python - CouchDB POST 响应(通过 Python 的子进程模块通过 curl 发送)正在丢失(curl 代码 53)。这是为什么?

mysql - ionic : sqLite & PouchDB or NoSQL

javascript - 如何获得按 "value"值降序排序的映射/归约结果?如果也使用列表函数可以实现这一点?

couchdb - 如何仅为某些用户和角色显示和复制文档?

database - couchdb 更新设计文档

android - 是否可以在 Android 中使用 Couch DB 或 MySql 或任何其他数据库?

node.js - 使用 cradle 和 CouchDB 对 Node.js 进行压力测试时,会出现错误 : EADDRINUSE, 地址已在使用中,这是怎么回事?

docker-compose couchdb 缺少文件

authentication - 安全客户端 couchApp/couchDB 用户身份验证

ios - iOS9 上的适配器丢失错误 - PouchDB