如何使用Cloudant Query从JSON数组中检索JSON对象

时间:2016-01-18 11:37:13

标签: json cloudant

我已将文档保存在cloudant DB中,格式如下。我想检索JSON对象,其值为KEY =" Test1"。以下是保存文档结构。

{
  "_id": "SOCIALKEYWORD",
  "_rev": "3-5b46ffc64d05858e15f443b1115d97be",
  "KEYWORD": [
    {
      "KEY": "Test1",
      "SITEID": 1,
      "STATUS": "A"
    },
    {
      "KEY": "@IdeaCellular",
      "SITEID": 1,
      "STATUS": "A"
    },
    {
      "KEY": "@idea_cares",
      "SITEID": 1,
      "STATUS": "A"
    }
  ]
}

我在KEY&创建了索引KEYWORD分别为JSON类型 我写了下面的查询,但没有结果。

{
  "selector": {
        "_id" : "SOCIALKEYWORD"
  },
  "include_fields": [
    "KEY",
    "SITEID",
    "STATUS"
  ]
}

请告诉我正确的查询

1 个答案:

答案 0 :(得分:0)

您能澄清一下您对查询结果的期望吗?我看到你所概述的两个直接问题。第一个问题是,如果您要像在查询中一样只查询KEY字段,则无需在KEYWORD_id字段上创建索引示例(_id字段上有一个特殊索引)。拥有这两个额外的索引不会导致任何问题,但它会创建两个不必要的索引。第二个问题是,在您的查询中,您必须指明要返回的顶级字段。请尝试此查询:

{
  "selector": {
    "_id" : "SOCIALKEYWORD"
  },
  "fields": [
    "KEYWORD"
  ]
}

此查询应该会给您以下结果:

{
  "KEYWORD": [
    {
      "KEY": "Test1",
      "SITEID": 1,
      "STATUS": "A"
    },
    {
      "KEY": "@IdeaCellular",
      "SITEID": 1,
      "STATUS": "A"
    },
    {
      "KEY": "@idea_cares",
      "SITEID": 1,
      "STATUS": "A"
    }
  ]
}

如果您尝试查询KEY(嵌套在KEYWORD中),那么您将需要在KEYWORD.KEY上创建索引并查询相同的内容。