Select 列名称并在 Couchbase 上查询 "LIKE"
Select column names and querying "LIKE" on Couchbase
我想从存储桶中获取所有列名。
我找到了一个查询:
SELECT ARRAY_DISTINCT(ARRAY_AGG(v)) AS column
FROM mybucket b UNNEST object_names(b) AS v
它正在获取列名数组,但我需要 LIKE
SQL 命令。是这样的:
SELECT column
FROM mybucket
WHERE column LIKE '%test%'
有办法吗?
这是一个棘手的问题,具体取决于您希望生成的结构是什么。免责声明,可能有更简洁的方法来做到这一点(但我还没有找到它——也许还有另一种方法不涉及OBJECT_NAMES
?)。
但无论如何,对我来说关键是 ARRAY
collection operator。
例如,这个:
SELECT ARRAY a FOR a IN ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
会 return 结果像
[
{
"filteredFieldNames": [
"testField1",
"anotherTestField"
]
}
]
如果您想要不同的格式,可以使用 ARRAY 运算符表达式。例如:
SELECT ARRAY { "fieldName" : a } FOR a IN
ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
哪个 return:
[
{
"filteredFieldNames": [
{
"fieldName": "testField1"
},
{
"fieldName": "anotherTestField"
}
]
}
]
OBJECT_NAMES() 仅给出顶级字段名称(不包括嵌套字段)
https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/objectfun.html
SELECT DISTINCT v AS column
FROM mybucket b UNNEST OBJECT_NAMES(b) AS v
WHERE v LIKE "%test%";
我想从存储桶中获取所有列名。
我找到了一个查询:
SELECT ARRAY_DISTINCT(ARRAY_AGG(v)) AS column
FROM mybucket b UNNEST object_names(b) AS v
它正在获取列名数组,但我需要 LIKE
SQL 命令。是这样的:
SELECT column
FROM mybucket
WHERE column LIKE '%test%'
有办法吗?
这是一个棘手的问题,具体取决于您希望生成的结构是什么。免责声明,可能有更简洁的方法来做到这一点(但我还没有找到它——也许还有另一种方法不涉及OBJECT_NAMES
?)。
但无论如何,对我来说关键是 ARRAY
collection operator。
例如,这个:
SELECT ARRAY a FOR a IN ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
会 return 结果像
[
{
"filteredFieldNames": [
"testField1",
"anotherTestField"
]
}
]
如果您想要不同的格式,可以使用 ARRAY 运算符表达式。例如:
SELECT ARRAY { "fieldName" : a } FOR a IN
ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
哪个 return:
[
{
"filteredFieldNames": [
{
"fieldName": "testField1"
},
{
"fieldName": "anotherTestField"
}
]
}
]
OBJECT_NAMES() 仅给出顶级字段名称(不包括嵌套字段) https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/objectfun.html
SELECT DISTINCT v AS column
FROM mybucket b UNNEST OBJECT_NAMES(b) AS v
WHERE v LIKE "%test%";