f# - 使用 N1QL 查询 Couchbase

标签 f# couchbase n1ql

我可以使用 View 查询文档就好了,但是切换到 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

最佳答案

SETreserved word在 N1QL。为了将其用作标识符,您需要使用反引号对其进行转义,例如:

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,则应始终检查此项返回假。如果在转义后查询失败 SET ,这将解释什么其他错误阻止查询运行。

例如,我刚刚注意到整个查询都用双引号括起来。这将向服务器发送字符串文字而不是查询。

关于f# - 使用 N1QL 查询 Couchbase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32579760/

相关文章:

f# - F# 元组的扩展方法

类型的 F# 后缀关键字

docker - Docker Couchbase:无法使用入口点脚本中的curl连接到端口8091

java - membase 服务器到 couchbase 服务器迁移 : Java client

nosql - couchbase 分析是否支持所有 N1QL 命令?

Couchbase 4010错误

F# WebAPI 默认反序列化产生@符号

sorting - 为什么是 F#'s Seq.sortBy much slower than LINQ' s IEnumerable<T>.OrderBy 扩展方法?

c# - .NET SDK 中的 Couchbase NodeUnavailableException