DocumentDB SQL - Iterasi
Di DocumentDB SQL, Microsoft telah menambahkan konstruksi baru yang dapat digunakan dengan kata kunci IN untuk memberikan dukungan untuk iterasi melalui array JSON. Dukungan untuk iterasi disediakan di klausa FROM.
Kami akan mempertimbangkan lagi tiga dokumen serupa dari contoh sebelumnya.
Berikut ini adalah AndersenFamily dokumen.
{
"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
}
Berikut ini adalah SmithFamily dokumen.
{
"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
}
Berikut ini adalah WakefieldFamily dokumen.
{
"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
}
Mari kita lihat contoh sederhana tanpa kata kunci IN di klausa FROM.
Berikut adalah kueri yang akan mengembalikan semua orang tua dari koleksi Keluarga.
SELECT *
FROM Families.parents
Ketika query di atas dijalankan, itu menghasilkan keluaran sebagai berikut.
[
[
{
"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"
}
]
]
Seperti yang dapat dilihat pada keluaran di atas, orang tua dari setiap keluarga ditampilkan dalam larik JSON terpisah.
Mari kita lihat contoh yang sama, namun kali ini kita akan menggunakan kata kunci IN di klausa FROM.
Berikut adalah query yang berisi kata kunci IN.
SELECT *
FROM c IN Families.parents
Ketika query di atas dijalankan, itu menghasilkan keluaran sebagai berikut.
[
{
"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"
}
{
"id": "WakefieldFamily",
"givenName": "Jesse",
"grade": 6
}
]
Pada contoh di atas, terlihat bahwa dengan iterasi, query yang melakukan iterasi terhadap parent dalam collection memiliki larik keluaran yang berbeda. Karenanya, semua orang tua dari setiap keluarga ditambahkan ke dalam satu larik.