【问题标题】:Couchbase: querying multiple atomic counter documents with viewCouchbase:使用视图查询多个原子计数器文档
【发布时间】:2015-05-22 15:30:21
【问题描述】:

我的 Couchbase 存储桶中有许多文档。其中一些文档用作原子操作的计数器,因此它们只存储一个数字。所有这些计数器文档在键中都有共同的前缀(例如,'SomePrefix_')。如何访问所有这些“前缀”文档?它们不会出现在视图中。

【问题讨论】:

    标签: c# couchbase


    【解决方案1】:

    默认情况下,计数器不会从查看结果中排除。可能您在映射器中无意中这样做了。例如,这里考虑了计数器的映射器。

    function (doc, meta) {
      if (meta.type == 'base64') {
        emit(meta.id, {counter: decodeBase64(doc)});
      } else {
        emit(meta.id, doc);
      }
    }
    

    我猜您正在尝试将 doc 用作 JSON 对象,这会导致映射器过滤掉计数器。

    【讨论】:

    • 在几个版本之后(当前使用服务器 3.0.2),这些计数器文档出现在视图结果中! map/reduce 没有任何变化 :-) 这是一种魔法。
    • 但是今天我们遇到了另一个问题。计数器文档 base64 编码。 decodeBase64 产生字符代码数组。例如,我们在 value 列中使用 [ 59 ] 而不是 9
    【解决方案2】:

    问题在于使用startsWith 函数。 使用indexOf(...) === 0 定义键是否以子字符串开头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多