我尝试运行此查询
delete from bucket o
use keys (select raw ARRAY_CONCAT(ARRAY_CONCAT(ARRAY_CONCAT(d, t), s), u)
from bucket
use keys 'SS')
我收到了这个回复:
{
"status": "Unexpected server error"
}
在服务器日志中我看到了:
Service 'query' exited with status 1. Restarting. Messages: runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1 fp=0xc20e97cfc0 sp=0xc20e97cfb8
created by github.com/couchbase/query/parser/n1ql.NewLexerWithInit
/home/couchbase/jenkins/workspace/watson-unix/goproj/src/github.com/couchbase/query/parser/n1ql/n1ql.nn.go:30999 +0x4a6c9
[goport] 2016/11/29 08:40:11 /opt/couchbase/bin/cbq-engine terminated: signal: aborted (core dumped)
此查询有什么问题?
我使用的是couchbase 4.5版。
答案 0 :(得分:1)
您也可以使用ARRAY_FLATTEN()函数或FIRST运算符。
从桶中删除o使用密钥 ARRAY_FLATTEN( ( )从存储桶使用密钥'SS' )中选择原始ARRAY_CONCAT(ARRAY_CONCAT(ARRAY_CONCAT(d,t),s),u) / em> ,1) 返回meta(o).id;
或
从桶中删除o 使用键FIRST x FOR x IN ( 选择原始ARRAY_CONCAT(ARRAY_CONCAT(ARRAY_CONCAT(d,t),s),u) 从斗 使用键'SS' ) 结束 返回meta(o).id;
请注意,当子查询用作表达式时(例如,作为ARRAY_FLATTEN()或FIRST构造中的参数),需要在子查询周围使用括号(粗体斜体)
答案 1 :(得分:0)
USE KEYS需要一系列键。 ARRAY_CONCAT()返回数组,Subquery返回数组。它成为阵列阵列。
按如下方式删除其中一个数组。
从桶中删除o 使用键(选择原始ARRAY_CONCAT(ARRAY_CONCAT(ARRAY_CONCAT(d,t),s),u) 从斗 使用键' SS')[0];
如果缺少ARRAY_CONCAT()参数或为null,则可能会在4.5中返回相同的恐慌错误。这已在4.5.1中修复。