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());
}

そして、次の例のように構造化された json ファイルのみを含む Couchbase のテストバケット:

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

outer_arrayとそれぞれvalueinner_array単純な文字列で繰り返し処理したいと思います。少なくとも 1 つの値が の条件を満たす場合、statementpathに追加する必要がありqueryResultます。は次のstatementようになります (この例は間違っています)。

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 に答える