使用 N1QL 查询 Couchbase
Querying Couchbase using N1QL
我可以很好地使用视图查询文档,但切换到 N1QL 后我成功 属性 为假。什么地方出了错 ?
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
SET
是 N1QL 中的 reserved word。为了将其用作标识符,您需要使用反引号将其转义,例如:
SELECT * FROM mydoc where `SET` = 'SET24MM2SCLV01'
否则会出现语法错误:
"errors": [
{
"code": 3000,
"msg": "syntax error - at SET"
}
]
您应该将查询更改为
让查询=“”"SELECT * FROM mydoc where SET
= 'SET24MM2SCLV01'"”
let query = "SELECT * FROM mydoc where `SET` = 'SET24MM2SCLV01'"
编辑
查询结果 also contains 一个 Error
属性 包含查询中发生的错误。如果 Success
returns 为假,则应始终检查此项。如果在转义 SET
后查询仍然失败,这将解释是什么其他错误阻止了查询 运行.
例如,我刚刚注意到整个查询都包含在双引号中。这将向服务器发送字符串文字而不是查询。
我可以很好地使用视图查询文档,但切换到 N1QL 后我成功 属性 为假。什么地方出了错 ?
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
SET
是 N1QL 中的 reserved word。为了将其用作标识符,您需要使用反引号将其转义,例如:
SELECT * FROM mydoc where `SET` = 'SET24MM2SCLV01'
否则会出现语法错误:
"errors": [
{
"code": 3000,
"msg": "syntax error - at SET"
}
]
您应该将查询更改为
让查询=“”"SELECT * FROM mydoc where SET
= 'SET24MM2SCLV01'"”
let query = "SELECT * FROM mydoc where `SET` = 'SET24MM2SCLV01'"
编辑
查询结果 also contains 一个 Error
属性 包含查询中发生的错误。如果 Success
returns 为假,则应始终检查此项。如果在转义 SET
后查询仍然失败,这将解释是什么其他错误阻止了查询 运行.
例如,我刚刚注意到整个查询都包含在双引号中。这将向服务器发送字符串文字而不是查询。