[英]Unwind and alias used together in an OrientDB SQL query
使用OrientDB 2.2.16並將給定的以下數據導入到文檔數據庫中:
{
"teams": [
{
"name": "McLaren F1 Team",
"nationality": "british",
"headquarters": {
"city": "Woking",
"country": "England"
},
"drivers": [
{
"name": "Fernando Alonso",
"nationality": "Spanish",
"yearOfBirth": "1980"
},
{
"name": "Jenson Button",
"nationality": "British",
"yearOfBirth": "1980"
}
]
},
{
"name": "Scuderia Ferrari",
"nationality": "italian",
"headquarters": {
"city": "Maranello",
"country": "Italy"
},
"drivers": [
{
"name": "Sebastian Vettel",
"nationality": "German",
"yearOfBirth": "1987"
},
{
"name": "Kimi Raikkonen",
"nationality": "Finnish",
"yearOfBirth": "1979"
}
]
}
]
}
使用unwind ,我想找到返回所有驅動程序名稱的查詢。 確切地說,結果必須是一個文檔列表,其中每個文檔都在名為“ name”的屬性中包含驅動程序的名稱。
我的(無效的)嘗試:
SELECT drivers.name FROM Teams展開驅動程序
它幾乎返回了我期望的結果,但是該名稱位於名為“ drivers”的屬性下。
SELECT driver.name AS name FROM車隊展開車手
完全失敗,沒有任何放松。
SELECT drivers.name AS名稱FROM車隊展開名稱
這可行,但是實際上是一個錯誤,因為別名適用於驅動程序,而不適用於名稱,這就是展開有效的原因。
有關如何詳細說明查詢的一些背景知識:
Teams
數據是從存儲中獲取的 就您而言,在此步驟中,您有兩個記錄:
查詢1:在v 2.2中,drivers.name的默認別名是drivers
(在v 3.0中,它將更改,默認別名將是drivers.name
)
| drivers |
+-----------------------------------------+
| ["Fernando Alonso", "Jenson Button" ] |
| ["Sebastian Vettel", "Kimi Raikkonen" ] |
查詢2和3:在這種情況下,別名為name
,您需要明確定義它
| name |
+-----------------------------------------+
| ["Fernando Alonso", "Jenson Button" ] |
| ["Sebastian Vettel", "Kimi Raikkonen" ] |
查詢1如預期那樣展開drivers
,但別名仍然是drivers
查詢2嘗試展開drivers
但沒有找到它,這就是為什么它失敗的原因
查詢3解除預期的name
結論: 這是預期的行為
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.