【问题标题】:Creating filtered indexes on couchdb在 couchdb 上创建过滤索引
【发布时间】:2017-09-05 08:03:52
【问题描述】:

我一直在尝试按照CouchDB 2.1 documentation 创建过滤索引,但失败得很惨(在本节的底部有一个示例“使用所有可用查询参数创建索引”) .

基本上,我有一堆文档,它们具有不同的class 属性(就像文档类型一样)。我正在尝试仅为具有 class="File"extension="pdf" 的文档创建索引

{
  "index": {
    "fields": [
      "_id", "class", "extension"
    ],
    "selector": {
      "class": {
        "$eq": "File"
      },
      "extension": {
        "$eq": "pdf"
      }
    }
  },
  "type": "json"
}

但是,当我尝试从 Futon 创建索引时,我收到 Invalid key selector for this request 错误。我对文档的解释有误还是我错过了什么?

【问题讨论】:

    标签: couchdb couchdb-futon couchdb-2.0


    【解决方案1】:

    我在the documentation 中看不到任何表明您可以在索引中包含选择器的内容。该文档建议您创建索引的“发布”可以具有以下查询参数:索引、ddoc、名称和类型。 index 参数应该只有一个字段名称数组(以及可选的排序顺序)。

    我还没有尝试过(目前我有一个旧版本的 CouchDb),但我会在尝试再次创建索引之前删除除这些参数之外的任何其他参数。

    我想知道您提到的示例是否是文档中的错误?我不确定它是否真的属于索引创建部分。

    【讨论】:

    • 它表示“index is (json) – JSON object 描述要创建的索引”,可以是任意描述对象。此外,如果您向下滚动到“使用所有可用查询参数创建示例索引”的部分,您将在下面看到似乎是扩展索引定义,其中包括selector。我错了吗?
    • 我不确定,但您收到的错误消息表明“选择器”键是问题所在。使用 map/reduce 可能允许您创建所需的索引。它有点冗长,但对于创建高级索引可能更简单。您只需要一个根据您喜欢的标准“发出”您想要的索引条目(键和值对)的函数。
    • 不,没有 map-reduces。我只谈论索引
    • 也许我们在谈论不同的目的,但是您可以通过在设计文档中的视图对象中放置一个地图函数来在 CouchDb 中创建一个索引。这里有一些文档:guide.couchdb.org/draft/design.html#basic
    • 你是说通用设计文档可以用来为Mango查询创建索引?
    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2015-11-15
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多