我有一个结构为{doc.data.role.level}的文档,我想访问level属性,但使用此查询
SELECT r.data.role.level FROM `hostel` r where r.id = '12345678Z'
我得到了错误
"msg": "syntax error - at role",
但是通过这些查询我没有结果
SELECT r.data.`role`.level FROM `hostel` r where r.id = '12345678Z'
SELECT `r.data.role.level` FROM `hostel` r where r.id = '12345678Z'
如果字段/标识符或保留关键字中有特殊字符,则必须按照https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/identifiers.html的说明,使用反引号(即,转义的标识符)对它们进行转义>
示例1:“角色”是备用关键字
{ "id":"12345678Z", "data":{"role":{"level":3}} } SELECT r.data.`role`.level FROM hostel AS r WHERE r.id = "12345678Z";
示例2:字段具有特殊字符点。您必须转义整个字段名称(以解释为字段vs嵌套文档)。
{ "id":"12345678Z", "data.role.level":5 } SELECT r.`data.role.level` FROM hostel AS r WHERE r.id = "12345678Z";
示例3:旅馆是数组。如果要查看数组内部,则必须使用ANY语法。
{
"hostels": [ { "id":"12345678Z"},
{ "id":"34545678Z"}}
]
"data":{"role":{"level":3}}
}
SELECT r.data.`role`.level
FROM hostel AS r
WHERE ANY h IN r.hostels SATISFIES h.id = "12345678Z" END;
您正走右引号,可以逃脱保留字。