【问题标题】:Couchbase N1QL query error on keyword nested path关键字嵌套路径上的 Couchbase N1QL 查询错误
【发布时间】:2019-05-10 13:48:28
【问题描述】:

SELECT data FROM users WHERE data.role = "ADMIN"

由于 SQL 中的保留关键字 role,此查询返回错误。 password 也一样。 我已经创建了索引:

CREATE INDEX loginSearchIndex ON users(data.role) USING GSI (使用 ` char 是唯一可行的方法。如果我在查询中执行相同操作,则不会返回任何结果。

对于没有任何保留关键字的嵌套对象,它工作得很好。 关于在运行 N1QL 查询时如何转义保留关键字的任何想法?

所有查询测试都在查询工作台中执行

【问题讨论】:

标签: sql couchbase n1ql


【解决方案1】:

所以,经过一番挖掘后,我发现了应该怎么做

创建索引,您可以使用任意数量的嵌套字段,但使用 ` char:

CREATE INDEX loginSearchIndex ON users(data.`role`) USING GSI

然后你运行查询

SELECT data FROM users WHERE data.`role` = "ADMIN"

工作正常

更新: 如果您有嵌套的 JSON,您可以将每个键包装在 `.不要忘记添加必要的索引

SELECT data FROM users WHERE data.`children`.`rockets`.`elon`.`age` = "48"

【讨论】:

  • 注意:只有在字段名称为保留字(如“role”)或包含特殊字符(包括空格、破折号等)时,才需要将字段名放在反引号内。跨度>
猜你喜欢
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多