我将如何查询键以使其部分匹配?

How would I query keys such that it would partially match?

我们以这份文件为例:

{
"id":1
"planet":"earth-616"
"data":[
    ["wolverine","mutant"],
    ["Storm","mutant"],
    ["Mark Zuckerberg","human"]]
}

我创建了一个搜索索引来索引名称和类型,例如,如果搜索 name:wolverine 或 type:mutant,我会得到包含它的文档。但是根据我的要求 我不想要整个文档,我只想要 ["wolverine","mutant"] 我创建了一个输出为的视图:

{
    "id":1,
    "key":"earth-616",
    "value":["earth-616","wolverine","mutant"]
}

然后我发现我只能用键查询。 (是否可以在视图上创建搜索索引?,在文档中找不到任何内容) 或者我应该像这样创建视图和上面的视图:

{
    "id":1,
    "key":"wolverine",
    "value":["earth-616","wolverine","mutant"]
}

{
    "id":,
    "key":"mutant"
    "value":["earth-616","wolverine","mutant"]
}

这样我可以查询我想要的键,但我似乎无法部分匹配键(我错过了什么吗?)

如果您需要输出与描述的完全一致,那么我相信您必须使用视图,并且为了支持通配符搜索,我相信您必须为键的每个子字符串编制索引。

一种替代方法是使用 Cloudant Query,尽管不可否认您无法获得所需的确切输出。如果您发出这样的查询:

{
  "selector": {
    "_id": {
      "$gt": 0
    },
    "data": {
      "$elemMatch": {
        "$elemMatch": {
          "$regex": "(?i)zuck"
        }
      }
    }
  },
  "fields": [
    "data"
  ]
}

结果将是整个数据数组:

{
  "data": [
    ["wolverine", "mutant"],
    ["Storm", "mutant"],
    ["Mark Zuckerberg", "human"]
  ]
}