1

给定以下 Java 代码:

String statement = "SELECT `path` FROM test-bucket;";
N1qlQueryResult queryResult = bucket.query(N1qlQuery.simple(statement);

for (N1qlQueryRow n1qlQueryRow : queryResult) {
  System.out.println(n1qlQueryRow.toString());
}

Couchbase 上的测试桶仅包含 json 文件,其结构类似于以下示例:

{
  "path": "C:\\example\\filename.txt",
  "outer_array": [
    {
      "inner_array": [
        {
            "value": 1,
        },
        {
            "value": 2,
        }
      ]
    },
    {
      "inner_array": [
        {
            "value": 3,
        }
      ]
    }
  ]
}

我想用一个简单的字符串遍历outer_array每个valueinner_array如果至少一个值满足 中的条件statementpath则应将 添加到 中queryResultstatement应该看起来像这样(这个例子是错误的):

statement = "SELECT `path` FROM test-bucket WHERE outer_array.inner_array.value=1;";

但这显然是行不通的。那么我必须做什么来检查每个value

4

1 回答 1

1

您可以执行以下操作:

SELECT `path`
FROM `test-bucket`
WHERE ANY oa IN outer_array SATISFIES (ANY ia IN oa.inner_array SATISFIES ia.`value` = 1 END) END;
于 2015-12-22T18:38:44.507 回答