DocumentDB SQL - Mệnh đề Từ
Trong chương này, chúng ta sẽ đề cập đến mệnh đề FROM, mệnh đề này không hoạt động giống như mệnh đề FROM tiêu chuẩn trong SQL thông thường.
Các truy vấn luôn chạy trong ngữ cảnh của một tập hợp cụ thể và không thể kết hợp giữa các tài liệu trong tập hợp, điều này khiến chúng tôi tự hỏi tại sao chúng tôi cần mệnh đề FROM. Trên thực tế, chúng tôi không có, nhưng nếu chúng tôi không bao gồm nó, thì chúng tôi sẽ không truy vấn các tài liệu trong bộ sưu tập.
Mục đích của điều khoản này là chỉ định nguồn dữ liệu mà truy vấn phải hoạt động. Thông thường, toàn bộ bộ sưu tập là nguồn, nhưng thay vào đó người ta có thể chỉ định một tập hợp con của bộ sưu tập. Mệnh đề FROM <from_specification> là tùy chọn trừ khi nguồn được lọc hoặc chiếu sau trong truy vấn.
Hãy xem lại cùng một ví dụ. Sau đây làAndersenFamily tài liệu.
{
"id": "AndersenFamily",
"lastName": "Andersen",
"parents": [
{ "firstName": "Thomas", "relationship": "father" },
{ "firstName": "Mary Kay", "relationship": "mother" }
],
"children": [
{
"firstName": "Henriette Thaulow",
"gender": "female",
"grade": 5,
"pets": [ { "givenName": "Fluffy", "type": "Rabbit" } ]
}
],
"location": { "state": "WA", "county": "King", "city": "Seattle" },
"isRegistered": true
}
Sau đây là SmithFamily tài liệu.
{
"id": "SmithFamily",
"parents": [
{ "familyName": "Smith", "givenName": "James" },
{ "familyName": "Curtis", "givenName": "Helen" }
],
"children": [
{
"givenName": "Michelle",
"gender": "female",
"grade": 1
},
{
"givenName": "John",
"gender": "male",
"grade": 7,
"pets": [
{ "givenName": "Tweetie", "type": "Bird" }
]
}
],
"location": {
"state": "NY",
"county": "Queens",
"city": "Forest Hills"
},
"isRegistered": true
}
Sau đây là WakefieldFamily tài liệu.
{
"id": "WakefieldFamily",
"parents": [
{ "familyName": "Wakefield", "givenName": "Robin" },
{ "familyName": "Miller", "givenName": "Ben" }
],
"children": [
{
"familyName": "Merriam",
"givenName": "Jesse",
"gender": "female",
"grade": 6,
"pets": [
{ "givenName": "Charlie Brown", "type": "Dog" },
{ "givenName": "Tiger", "type": "Cat" },
{ "givenName": "Princess", "type": "Cat" }
]
},
{
"familyName": "Miller",
"givenName": "Lisa",
"gender": "female",
"grade": 3,
"pets": [
{ "givenName": "Jake", "type": "Snake" }
]
}
],
"location": { "state": "NY", "county": "Manhattan", "city": "NY" },
"isRegistered": false
}
Trong truy vấn trên, “SELECT * FROM c”Chỉ ra rằng toàn bộ bộ sưu tập Gia đình là nguồn để liệt kê.
Tài liệu phụ
Nguồn cũng có thể được giảm xuống một tập hợp con nhỏ hơn. Khi chúng ta chỉ muốn truy xuất một cây con trong mỗi tài liệu, gốc con sau đó có thể trở thành nguồn, như thể hiện trong ví dụ sau.
Khi chúng tôi chạy truy vấn sau:
SELECT * FROM Families.parents
Các tài liệu con sau sẽ được lấy ra.
[
[
{
"familyName": "Wakefield",
"givenName": "Robin"
},
{
"familyName": "Miller",
"givenName": "Ben"
}
],
[
{
"familyName": "Smith",
"givenName": "James"
},
{
"familyName": "Curtis",
"givenName": "Helen"
}
],
[
{
"firstName": "Thomas",
"relationship": "father"
},
{
"firstName": "Mary Kay",
"relationship": "mother"
}
]
]
Theo kết quả của truy vấn này, chúng ta có thể thấy rằng chỉ các tài liệu phụ cha mẹ mới được truy xuất.