4

ビューを使用してドキュメントをクエリすることはできますが、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
4

1 に答える 1

6

SETN1QLの予約語です。識別子として使用するには、バッククォートでエスケープする必要があります。

SELECT * FROM mydoc where `SET` = 'SET24MM2SCLV01'

そうしないと、構文エラーが発生します。

"errors": [
    {
        "code": 3000,
        "msg": "syntax error - at SET"
    }
]

クエリを次のように変更する必要があります

let query = """SELECT * FROM mydoc where SET= 'SET24MM2SCLV01'"""

let query = "SELECT * FROM mydoc where `SET` = 'SET24MM2SCLV01'"

編集

クエリ結果には、クエリで発生したエラーを含むプロパティも含まれています。false を返すError場合は常にチェックする必要があります。Successエスケープした後でもクエリが失敗する場合SET、これにより、クエリの実行を妨げている他のエラーが説明されます。

たとえば、クエリ全体が二重引用符で囲まれていることに気付きました。これにより、クエリの代わりに文字列リテラルがサーバーに送信されます。

于 2015-09-15T07:20:20.113 に答える