我的couchbase存储桶中有多个具有以下 struct 的文档:

{
  "objectType": "someObjectType",
  "id": "1",
  "latest": {
    "id": "1",
    "version": "biyr4jqi4nny"
  },
  "history": {
    "bi11b295bjng": {
      "id": "1",
      "version": "bi11b295bjng"
    }
    "bi1189wx1h6v": {
      "id": "1",
      "version": "bi1189wx1h6v"
    }
  }
}

正如上面的片段所示,历史是对象的对象.我试图做的是 Select objectType、id、latest和history,但是history应该只包括查询中指定的对象,而不是所有的历史(可能非常庞大).

我的查询如下所示:

SELECT
    bucket.id, 
    bucket.objectType, 
    bucket.latest, 
    bucket.history.bi11b295bjng
FROM bucket WHERE objectType = 'someObjectType'

这让我产生了以下react :

[
  {
    "objectType": "someObjectType",
    "id": 1,
    "latest": {
      "id": "9mobile_NG_001-ROW",
      "version": "biyr4jqi4nny"
    },
    "biyr4jqi4nny": {
      "id": "1",
      "version": "biyr4jqi4nny"
    }
  }
]

查询对象已从父对象中展开.所需的输出应如下所示:

[
  {
    "objectType": "someObjectType",
    "id": 1,
    "latest": {
      "id": "9mobile_NG_001-ROW",
      "version": "biyr4jqi4nny"
    },
    "history": {
      "biyr4jqi4nny": {
        "id": "1",
        "version": "biyr4jqi4nny"
      }
    }
  }
]

我怎样才能了解历史.{version}而不丢失父对象?

推荐答案

将对象和别名构造为历史

SELECT
    b.id, 
    b.objectType, 
    b.latest, 
    { b.history.bi11b295bjng } AS history
FROM bucket AS b 
WHERE b.objectType = "someObjectType";

如果需要相同字段的多个对象

SELECT
    b.id, 
    b.objectType, 
    b.latest, 
    { b.history.bi11b295bjng, b.history.bi1189wx1h6v } AS history
FROM bucket AS b 
WHERE b.objectType = "someObjectType";

如果你有很多人想移除其中一个

SELECT
    b.id, 
    b.objectType, 
    b.latest, 
    OBJECT_REMOVE(b.history,"bi11b295bjng") AS history
FROM bucket AS b 
WHERE b.objectType = "someObjectType";

Json相关问答推荐

您可以使用Jolt对JSON执行OR条件吗

如何使用JQ有条件 Select 值

Jolt变换将字段移动到数组的每个元素中

Vega-Lite(Deneb):难以将最小和最大值应用于折线图和文本标签以及线条末尾的点

Android 如何判断小时时间是否在两个时间之间?

APIM 生成 JsonArray 到 EventHub

Jolt 不打印任何东西

如何修复通过在 tsconfig.json 文件中添加allowImportingTsExtensions引发的错误 TS5023?

使用 KQL 和外部 data() 运算符从 json 文件中提取信息

使用带有逗号的字段名称构建 struct

jq搜索特定字符串并输出对应的父值

如何使用 boost::json::value 调用无参数函数

使用 simplejson 序列化简单类对象的最简单方法?

Rails 中奇怪的 JSON Javascript 问题

json和空数组

如何访问 JSON 对象数组的第一个元素?

使用 JSON.Net 的 C# 到 JSON 序列化

java.lang.BootstrapMethodError:调用站点#4 bootstrap 方法的异常,初始化 retrofit 时

运算符不存在:json = json

从调试器获取 IntelliJ Idea 中的 JSON 对象