我需要制作一个N1QL查询来提取年龄最大的动物,例如:
[
{
"animals": [
{
"name": "dog1",
"registered": "7-16-2017",
"age_in_months": "24",
},
{
"name": "dog2",
"registered": "7-18-2017",
"age_in_months": "28",
}
]
}
]
我需要这个结果:
[
{
"oldest":
{
"name": "dog2",
"registered": "7-18-2017",
"age_in_months": "28",
}
}
]
我正在使用此查询
select t1.animals from `bucket` t1 use keys "myKey";
但我不知道如何从数组中提取部分
答案 0 :(得分:0)
尝试以下步骤:
UNNEST
,MAX
和使用此查询实现步骤1和2
SELECT RAW MAX(animals.age_in_months)
FROM `bucket` USE KEYS "myKey" UNNEST animals
步骤3再次使用UNNEST
,但这次我们使用上一个查询的输出来选择具有最大年龄的动物。这种方法将挑选所有年龄最大的动物。
这是完整的查询:
SELECT animal
FROM `bucket` b USE KEYS "myKey" UNNEST animals animal
WHERE animal.age_in_months IN
(SELECT RAW MAX(animals.age_in_months)
FROM `bucket` USE KEYS "myKey" UNNEST animals);
以下是您的例子的结果:
[
{
"animal": {
"age_in_months": "28",
"name": "dog2",
"registered": "7-18-2017"
}
}
]