gpt4 book ai didi

azure-cosmosdb - Azure CosmosDB 嵌套 WHERE 查询

转载 作者:行者123 更新时间:2023-12-05 05:13:30 24 4
gpt4 key购买 nike

我正在尝试在 CosmosDB 中实现以下查询:

SELECT * FROM c
WHERE c.timestamp = (SELECT VALUE MAX(c.timestamp) FROM c )

但是它似乎并没有首先调用子查询并返回所有行。

这可能吗?

最佳答案

我来自 CosmosDB 工程团队。

CosmosDB 查询仅支持相关子查询,因此子查询只能引用父集合中的项目。例如,您可以像这样对文档中的嵌套属性使用聚合:

SELECT TOP 1000 
c.id,
MaxNutritionValue,
MinNutritionValue,
AvgNutritionValue
FROM c
JOIN (SELECT VALUE Max(n.nutritionValue) FROM n IN c.nutrients) MaxNutritionValue
JOIN (SELECT VALUE Min(n.nutritionValue) FROM n IN c.nutrients) MinNutritionValue
JOIN (SELECT VALUE Avg(n.nutritionValue) FROM n IN c.nutrients) AvgNutritionValue

假设文档结构如下:

{
"id":"someId",
"nutrients":[
{
"item": "pizza",
"nutritionValue": 20
},
{
"item": "burger",
"nutritionValue": 30
}
]
}

要实现你想要的,你可以这样做:

SELECT TOP 1 * FROM c ORDER BY c.timestamp DESC 

虽然不适用于所有聚合,但此方法可以帮助计算最大值或最小值。

关于azure-cosmosdb - Azure CosmosDB 嵌套 WHERE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53671485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com