jas*_*jas 3 azure-cosmosdb azure-cosmosdb-sqlapi
想象我们有一个这样的集合(示例取自 https://www.documentdb.com/sql/demo)
{
"_id" : "19015",
"description" : "Snacks, granola bars, hard, plain",
"servings" : [
{
"amount" : 1,
"description" : "bar",
"weightInGrams" : 21
},
{
"amount" : 1,
"description" : "bar (1 oz)",
"weightInGrams" : 28
},
{
"amount" : 1,
"description" : "bar",
"weightInGrams" : 25
}
]
}
Run Code Online (Sandbox Code Playgroud)
我如何在SQL api中查询CosmosDB以获取这样的结果?
{
"_id" : "19015",
"servings" : [
{
"description" : "bar"
},
{
"description" : "bar (1 oz)"
},
{
"description" : "bar"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在MongoDB,我会使用这样的查询
db.getCollection('food').find({id: '19015'}, {'servings.description' : 1})
Run Code Online (Sandbox Code Playgroud)
使用联接等尝试了多个方案
SELECT
food.id,
food.servings.description
FROM food
WHERE food.id = "19015"
Run Code Online (Sandbox Code Playgroud)
要么
SELECT
food.id,
[{
description: food.servings[0].description
}] AS servings
FROM food
WHERE food.id = "19015"
Run Code Online (Sandbox Code Playgroud)
[0]
我尝试过[]
,[$]
但不起作用有人知道我如何以简单的方式解决此问题吗?
您可以使用ARRAY(subquery)表达式来实现此目的。这是查询:
SELECT
food.id,
ARRAY(SELECT serving.description FROM serving IN food.servings) AS servings
FROM food
WHERE food.id = "19015"
Run Code Online (Sandbox Code Playgroud)
小智 1
通过执行此查询:
select food.id, servings.description
from food join servings in food.servings
Run Code Online (Sandbox Code Playgroud)
你至少会得到以下结果:
{"id":19015, "description":"bar"}
{"id":19015, "description":"bar (1 oz)"}
{"id":19015, "description":"bar"}
Run Code Online (Sandbox Code Playgroud)
不是 100% 符合您的预期,但也许是您可以使用的东西!
归档时间: |
|
查看次数: |
1764 次 |
最近记录: |