couchbase - 在 N1QL 响应中使用 Couchbase 字符串函数

标签 couchbase n1ql

我想检索和操作一些 Couchbase 文档,即检索并进行一些字符串操作,但我在网上看不到初学者示例。

我在这里使用的方法正确还是有更简单的方法...?

SELECT  meta().id    
FROM bucket_foo 
where meta().id like  "%-foobar"  
ORDER BY meta().id

这给了我查询结果...

[
  {
    "id": "172.26.138.52-foobar"
  },
  {
    "id": "172.26.138.53-foobar"
  },
  {
    "id": "172.26.138.64-foobar"
  }
]

我想删除后缀,即将其转换为:

 [
      {
        "id": "172.26.138.52"
      },
      {
        "id": "172.26.138.53"
      },
      {
        "id": "172.26.138.64"
      }
    ]

所以看完https://developer.couchbase.com/documentation/server/4.0/n1ql/n1ql-language-reference/stringfun.html我试过了……

SELECT  REPLACE(
  (SELECT meta().id  FROM foo where meta().id like  "%-foobar"  ORDER BY meta().id)
, "-foobar", "") as replace_all;

但是我明白了

[
  {
    "replace_all": null
  }
]

[我是 Couchbase 的新手。]

最佳答案

你的方法是正确的,子查询返回数组,你不能替换数组。在这种情况下不需要子查询。

您可以使用 RTRIM() 或 REPLACE() 或 SUBSTR() 或类似函数

SELECT RTRIM(meta().id,"-foobar") AS id
FROM bucket_foo
where meta().id like  "%-foobar"
ORDER BY id;

SELECT REPLACE(meta().id,"-foobar","") AS id
FROM bucket_foo
where meta().id like  "%-foobar"
ORDER BY id;

SELECT SUBSTR(meta().id,0,LENGTH(meta().id)-LENGTH("-foobar")) AS id
FROM bucket_foo
where meta().id like  "%-foobar"
ORDER BY id;

https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/stringfun.html

关于couchbase - 在 N1QL 响应中使用 Couchbase 字符串函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51176065/

相关文章:

ios - 沙发底座精简版 N1QL : how to query a array for a array of values

java - couchbase:使用 java 查询 View 错误连接超时

Couchbase - 获取 id 引用的文档的属性

node.js - nodejs couchbase安装失败

java - Spring & Couchbase - 如何通过代码创建索引

Couchbase 4010错误

java - 如何确保我的 N1QL 查询考虑最近的更改?

database - 对象查询的 Couchbase 对象

arrays - 根据平面结构输出中的条件从数组返回特定​​项目

database - CouchBase View 获取多个范围