使用 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
应添加到 queryResult
。
statement
应该看起来像这样(这个例子是错误的):
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;
给定以下 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
应添加到 queryResult
。
statement
应该看起来像这样(这个例子是错误的):
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;