给出以下 JSON
{
"Families": [
{ "Name": "Smith",
"Children": [
{ "Name": "Bob",
"Pets": [
{ "Name": "Oscar", "Type": "Cat"},
{ "Name": "Otto", "Type": "Dog"}
]
},
{ "Name": "Brittney",
"Pets": [
{ "Name": "Isolde", "Type": "Dog"},
{ "Name": "Ignatz", "Type": "Turtle"}
]
}
]
},
{ "Name": "Miller",
"Children": [
{ "Name": "Alex",
"Pets": [
{ "Name": "Elvis", "Type": "Horse"}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
A)我想创建一个产生以下结构的查询
[
{ "FamilyName": "Smith",
"KidName": "Bob",
"Petname": "Oscar"
},
{ "FamilyName": "Smith",
"KidName": "Bob",
"Petname": "Otto"
},
{ "FamilyName": "Smith",
"KidName": "Brittney",
"Petname": "Isolde"
},
{ "FamilyName": "Smith",
"KidName": "Brittney",
"Petname": "Ignatz"
},
{ "FamilyName": "Miller",
"KidName": "Alex",
"Petname": "Elvis"
}
]
Run Code Online (Sandbox Code Playgroud)
B)我想创建一个查询来产生这个略有不同的结构
[
{ "FamilyName": "Smith",
"KidName": "Bob",
"Petnames": ["Oscar", Otto"]
},
{ "FamilyName": "Smith",
"KidName": "Brittney",
"Petname": ["Isolde", "Ignatz"]
},
{ "FamilyName": "Miller",
"KidName": "Alex",
"Petname": ["Elvis"]
}
]
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助
罗伯特
实际上这里有一个非常好的文档:https: //learn.microsoft.com/en-us/azure/cosmos-db/sql-query-join和这里: https: //learn.microsoft.com/en -us/azure/cosmos-db/sql-query-object-array#arrays
对于数组,您需要使用嵌套连接,如下所示:
鉴于:
{
"id": "so-test",
"Families": [
{
"Name": "Smith",
"Children": [
{
"Name": "Bob",
"Pets": [
{
"Name": "Oscar",
"Type": "Cat"
},
{
"Name": "Otto",
"Type": "Dog"
}
]
},
{
"Name": "Brittney",
"Pets": [
{
"Name": "Isolde",
"Type": "Dog"
},
{
"Name": "Ignatz",
"Type": "Turtle"
}
]
}
]
},
{
"Name": "Miller",
"Children": [
{
"Name": "Alex",
"Pets": [
{
"Name": "Elvis",
"Type": "Horse"
}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
您可以对 A 使用此查询:
SELECT
f.Name as FamilyName,
c.Name as KidName,
p.Name as Petname
FROM d
JOIN f IN d.Families
JOIN c IN f.Children
JOIN p IN c.Pets
WHERE d.id = "so-test"
Run Code Online (Sandbox Code Playgroud)
你会得到这个结果:
[
{
"FamilyName": "Smith",
"KidName": "Bob",
"Petname": "Oscar"
},
{
"FamilyName": "Smith",
"KidName": "Bob",
"Petname": "Otto"
},
{
"FamilyName": "Smith",
"KidName": "Brittney",
"Petname": "Isolde"
},
{
"FamilyName": "Smith",
"KidName": "Brittney",
"Petname": "Ignatz"
},
{
"FamilyName": "Miller",
"KidName": "Alex",
"Petname": "Elvis"
}
]
Run Code Online (Sandbox Code Playgroud)
对于 B),使用此查询添加ARRAY
方法
SELECT
f.Name as FamilyName,
c.Name as KidName,
ARRAY(SELECT DISTINCT VALUE p.Name from p IN c.Pets) as Petname
FROM d
JOIN f IN d.Families
JOIN c IN f.Children
WHERE d.id = "so-test"
Run Code Online (Sandbox Code Playgroud)
你会得到这些结果:
[
{
"FamilyName": "Smith",
"KidName": "Bob",
"Petname": [
"Oscar",
"Otto"
]
},
{
"FamilyName": "Smith",
"KidName": "Brittney",
"Petname": [
"Isolde",
"Ignatz"
]
},
{
"FamilyName": "Miller",
"KidName": "Alex",
"Petname": [
"Elvis"
]
}
]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3754 次 |
最近记录: |