Couchbase - SELECT 对象数组中的字段子集

Couchbase - SELECT a subset of fields from array of objects

我正在使用 travel-sample 数据集,运行 以下查询:

SELECT id, schedule FROM `travel-sample`WHERE type = "route" LIMIT 1;

它正在 returning,结果如下:

[
  {
    "id": 10000,
    "schedule": [
      {
        "day": 0,
        "flight": "AF198",
        "utc": "10:13:00"
      },
      {
        "day": 0,
        "flight": "AF547",
        "utc": "19:14:00"
      },
      ...
    ]
  }
]

但是,我不想 return schedule.$.day 字段;即我希望我的结果是:

[
  {
    "id": 10000,
    "schedule": [
      {
        "flight": "AF198",
        "utc": "10:13:00"
      },
      {
        "flight": "AF547",
        "utc": "19:14:00"
      },
      ...
    ]
  }
]

如何才能 SELECT 对象数组中的对象字段的子集?


我已经尝试 UNNEST 但我不想为每个 schedule 元素单独记录 - 我希望 schedule 元素保持嵌套在文档中。

我也试过使用OBJECT_REMOVE

SELECT id, ARRAY OBJECT_REMOVE(x, 'day') FOR x in schedule END AS schedule FROM `travel-sample` WHERE type = "route" LIMIT 1;

但我想将字段列入白名单而不是黑名单。

您上次尝试接近成功。除了使用 OBJECT_REMOVE,您可以简单地构造您想要返回的对象。

SELECT id, ARRAY {"flight": x.flight, "utc": x.utc} FOR x in schedule END AS schedule FROM `travel-sample` WHERE type = "route" LIMIT 1;

您将得到以下结果:

[
  {
    "id": 10000,
    "schedule": [
      {
        "flight": "AF198",
        "utc": "10:13:00"
      },
      {
        "flight": "AF547",
        "utc": "19:14:00"
      },
      ...
    ]
  }
]