使用 N1QL 从数组中迭代数组

Iterating through an array out of arrays using N1QL

给定以下 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 和每个 inner_array 的每个 value。如果至少有一个值满足 statement 中的条件 , path 应添加到 queryResultstatement 应该看起来像这样(这个例子是错误的):

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

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

您可以执行以下操作:

SELECT `path`
FROM `test-bucket`
WHERE ANY oa IN outer_array SATISFIES (ANY ia IN oa.inner_array SATISFIES ia.`value` = 1 END) END;