我可以使用视图查询文档,但切换到N1QL会将Success属性设置为false。什么地方出了错 ?
let cluster = new Cluster()
let bucket = cluster.OpenBucket("mydoc","")
let query = """SELECT * FROM mydoc where SET = 'SET24MM2SCLV01'"""
let result = bucket.Query(query)
Console.WriteLine(result.Success) //would give false
答案 0 :(得分:5)
SET
是N1QL中的reserved word。为了将其用作标识符,您需要使用反引号来转义它,例如:
SELECT * FROM mydoc where `SET` = 'SET24MM2SCLV01'
如果您没有收到语法错误:
"errors": [
{
"code": 3000,
"msg": "syntax error - at SET"
}
]
您应该将查询更改为
让查询=""" SELECT * FROM mydoc SET
=' SET24MM2SCLV01'""&# 34; 击>
let query = "SELECT * FROM mydoc where `SET` = 'SET24MM2SCLV01'"
修改强>
查询结果also contains一个Error
属性,其中包含查询中出现的错误。如果Success
返回false,则应始终检查此项。如果在转义SET
后查询失败,这将解释其他错误阻止查询运行。
例如,我只是注意到整个查询都用双引号括起来。这会将字符串文字发送到服务器而不是查询。