Couchbase-从对象数组中选择字段子集
我正在使用Couchbase-从对象数组中选择字段子集,couchbase,Couchbase,我正在使用旅行样本数据集,并正在运行以下查询: SELECT id, schedule FROM `travel-sample`WHERE type = "route" LIMIT 1; 它将返回以下结果: [ { "id": 10000, "schedule": [ { "day": 0, "flight": "AF198", "utc": "10:13:00" }, {
旅行样本
数据集,并正在运行以下查询:
SELECT id, schedule FROM `travel-sample`WHERE type = "route" LIMIT 1;
它将返回以下结果:
[
{
"id": 10000,
"schedule": [
{
"day": 0,
"flight": "AF198",
"utc": "10:13:00"
},
{
"day": 0,
"flight": "AF547",
"utc": "19:14:00"
},
...
]
}
]
但是,我不想返回schedule.$.day
字段;i、 e.我希望我的结果是:
[
{
"id": 10000,
"schedule": [
{
"flight": "AF198",
"utc": "10:13:00"
},
{
"flight": "AF547",
"utc": "19:14:00"
},
...
]
}
]
[
{
"id": 10000,
"schedule": [
{
"flight": "AF198",
"utc": "10:13:00"
},
{
"flight": "AF547",
"utc": "19:14:00"
},
...
]
}
]
如何从对象数组中仅选择对象字段的子集
我尝试了
UNNEST
,但我不想为每个schedule
元素创建单独的记录-我希望schedule
元素保持嵌套在文档中
我还尝试过使用OBJECT\u REMOVE
SELECT id, ARRAY OBJECT_REMOVE(x, 'day') FOR x in schedule END AS schedule FROM `travel-sample` WHERE type = "route" LIMIT 1;
但我想将字段列入白名单而不是黑名单。您上次的尝试已接近成功。您不必使用
对象\u 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": [
{
"day": 0,
"flight": "AF198",
"utc": "10:13:00"
},
{
"day": 0,
"flight": "AF547",
"utc": "19:14:00"
},
...
]
}
]
你的最后一次尝试很接近。您不必使用
对象\u 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": [
{
"day": 0,
"flight": "AF198",
"utc": "10:13:00"
},
{
"day": 0,
"flight": "AF547",
"utc": "19:14:00"
},
...
]
}
]