‫Instruktur: Selamat datang kembali.
‫Jadi setelah beberapa kuliah teori yang lebih
‫berat, sekarang, kami akhirnya akan mulai menerapkan model data
‫kami dan mulai dengan lokasi.
‫Jadi dalam video ini, Anda akan
‫mempelajari semua tentang data geospasial di MongoDB.
‫Dan ini benar-benar
‫topik yang menurut saya pribadi sangat menarik.
‫Sekarang, ingat dari kuliah sebelumnya
‫bahwa data lokasi kami sebenarnya akan dimasukkan
‫ke dalam tur.
‫Oleh karena itu, pada dasarnya kami akan mendeklarasikan
‫segala sesuatu yang berhubungan dengan lokasi dalam
‫model tur kami.
‫Baiklah, jadi mari kita buka yang itu dan tepat di akhir,
‫mari kita mulai dengan menambahkan startLocation.
‫Oke, jadi kita akan memiliki
‫startLocation dan kemudian juga, lokasi secara umum.
‫Sekarang, MongoDB mendukung data geospasial di luar kotak.
‫Dan data geospasial pada dasarnya adalah data yang
‫menggambarkan tempat-tempat di bumi dengan menggunakan koordinat bujur dan lintang.
‫Oke, jadi kita bisa menggambarkan titik-titik
‫sederhana atau kita juga bisa menggambarkan geometri
‫yang lebih kompleks seperti garis atau bahkan poligon atau bahkan banyak poligon.
‫Jadi sungguh, semuanya
‫mungkin dengan data geospasial di MongoDB.
‫Oke, jadi mari tambahkan bidang startLocation kami di sini dan
‫kemudian mari kita benar-benar mengimplementasikan data geospasial ini.
‫Dan MongoDB menggunakan format data khusus yang disebut GeoJSON.
‫Baiklah, jadi.
‫GeoJSON, untuk menentukan data geospasial.
‫Dan sekarang, bagaimana cara kerjanya?
‫Nah, objek yang kami tentukan di sini sebenarnya,
‫kali ini, bukan untuk opsi jenis skema seperti yang
‫kami miliki, misalnya, di sini.
‫Jadi objek ini di sini untuk opsi tipe skema.
‫Ingat itu?
‫Tapi sekarang, objek di sini sebenarnya adalah
‫objek yang disematkan.
‫Dan di dalam
‫objek ini, kita dapat menentukan beberapa properti.
‫Baiklah, dan agar objek ini dikenali
‫sebagai JSON geospasial, kita membutuhkan properti
‫tipe dan koordinat, oke.
‫Jadi kita perlu tipe dan
‫kita perlu koordinat, oke.
‫Dan sekarang, masing-masing bidang
‫ini di sini, jadi pada dasarnya, masing-masing sub-bidang ini akan
‫mendapatkan opsi jenis skemanya sendiri.
‫Baiklah, jadi pada dasarnya di sini, ini sedikit bersarang, jadi kita
‫memiliki satu tingkat lebih dalam.
‫Oke, jadi kami memiliki opsi tipe skema tipe
‫dan kemudian kami juga membutuhkan opsi tipe skema untuk
‫koordinat dan lagi, seperti yang kami miliki di sini di bidang
‫lain ini dengan perbedaan bahwa ini sekarang adalah sub-bidang.
‫Jadi tipe membutuhkan tipe string, baiklah,
‫dan defaultnya harus point.
‫Jadi ingat bagaimana saya mengatakan bahwa
‫kita dapat menentukan banyak geometri di MongoDB?
‫Dan yang default selalu point.
‫Tapi sekali lagi, kita juga bisa menentukan poligon atau
‫garis atau geometri lain seperti itu.
‫Tetapi dalam hal ini, untuk startLocation,
‫itu harus benar-benar titik.
‫Jadi mari kita jadikan itu satu-satunya opsi
‫yang mungkin dengan
‫menentukan enum, jadi properti enumerasi.
‫Jadi ingat, kita dapat menentukan larik
‫dari semua opsi yang mungkin yang dapat diambil oleh
‫bidang ini dan dalam hal ini, kita hanya ingin itu menjadi titik, oke.
‫Jadi kami melakukannya di suatu tempat di atas sini.
‫Ya, di sini dengan
‫kesulitan di mana kami mengatakan itu hanya bisa sedang atau sulit.
‫Benar, dan di sini, kami melakukan
‫hal yang sama, tetapi hanya dengan satu pilihan, oke.
‫Jadi kita perlu mendefinisikan
‫tipe, mengingat, dan juga, array koordinat.
‫Oke, jadi kita melakukannya dengan menyebutkan angka, tapi
‫kemudian di dalam kurung kurawal ini.
‫Oke, dan itu pada dasarnya berarti
‫bahwa kita mengharapkan array angka
‫dan array ini, seperti namanya, adalah koordinat
‫titik dengan garis bujur pertama dan
‫hanya kedua, garis lintang.
‫Dan itu agak berlawanan
‫dengan intuisi karena biasanya bekerja sebaliknya.
‫Tapi di GeoJSON, begitulah cara kerjanya.
‫Jadi, jika Anda pergi, misalnya, ke Google Maps untuk
‫mendapatkan koordinat Anda, maka
‫Anda akan melihat garis lintang terlebih dahulu dan kemudian garis bujur.
‫Mari kita lihat itu.
‫Jadi buka
‫Maps di sini.
‫Katakanlah New York.
‫Oke, dan jika sekarang kita klik di suatu
‫tempat di sini, katakan di sini, maka
‫kita mendapatkan koordinat pertama dengan garis lintang dan kedua, garis bujur.
‫Baiklah, dan jika Anda tidak terbiasa dengan itu, mari
‫kita perkecil sedikit di
‫sini, sehingga kita dapat melihat seluruh bumi.
‫Wah, apa itu?
‫Oke.
‫Jadi garis lintang pada dasarnya adalah posisi horizontal yang
‫diukur dalam derajat mulai dari garis khatulistiwa, jadi
‫dari sini sampai ke atas sini.
‫Jadi di khatulistiwa, suhunya nol derajat
‫dan di atas sini, di Kutub Utara, suhunya 90 derajat.
‫Dan kemudian
‫bujur adalah hal yang sama, tetapi secara vertikal.
‫Jadi posisinya mulai dari meridian, yang lewat di
‫suatu tempat di sini, oke.
‫Jadi bujur adalah posisi vertikal
‫mulai dari sini.
‫Dan itulah mengapa titik di sini yang kita
‫dapatkan, di
‫suatu tempat di sini, di suatu tempat di sini di
‫Manhattan, memiliki garis lintang 40 dan garis bujur -73.
‫Baiklah.
‫Tapi bagaimanapun, mari kembali ke kode kita di sini, tentu saja,
‫karena saya juga ingin menentukan properti untuk alamat tersebut.
‫Jadi tambahkan string lain dan kemudian juga, deskripsi
‫startLocation ini
‫dan itu lagi, sebagai string, oke.
‫Dan kami tidak akan
‫mengatakan bahwa salah satu bidang ini harus
‫diperlukan karena kami ingin membiarkan startLocation kosong.
‫Oke, sekali lagi, untuk menentukan data geospasial dengan MongoDB, pada
‫dasarnya kita perlu membuat objek baru seperti yang kita
‫lakukan di sini.
‫Dan objek itu kemudian harus memiliki setidaknya dua nama bidang.
‫Jadi koordinat memiliki larik angka ini dan
‫kemudian tipenya, yang seharusnya bertipe string dan
‫harus berupa titik atau beberapa geometri
‫lain yang baru saja saya ceritakan sebelumnya.
‫Oke, dan tentu saja kita dapat menambahkan beberapa bidang lagi ke
‫objek ini seperti yang kita lakukan di sini, baiklah.
‫Sekarang, ingat bagaimana di kuliah terakhir kami
‫mengatakan bagaimana kami akan memasukkan semua lokasi
‫ke dalam dokumen tur?
‫Tapi sekarang, startLocation di sini sebenarnya bukan
‫dokumen itu sendiri.
‫Ini benar-benar hanya
‫sebuah objek yang menggambarkan titik tertentu di bumi.
‫Tetapi untuk benar-benar membuat dokumen
‫baru dan kemudian menyematkannya ke dokumen
‫lain, kita sebenarnya perlu membuat array, oke.
‫Jadi sebenarnya sangat mirip dengan apa yang sudah kita miliki di
‫sini, tetapi harus berupa array.
‫Dan itulah yang akan kami lakukan dengan lokasi kami.
‫Jadi lokasi, dan sekarang, saya membuat array.
‫Dan kemudian dalam array ini adalah tempat
‫saya akan menentukan objek seperti yang saya lakukan sebelumnya di startLocation.
‫Oke, dan Anda akan melihat
‫seperti apa tampilannya dalam sekejap di aplikasi Kompas.
‫Oke, dan sekarang, sebenarnya sama seperti sebelumnya.
‫Jadi tipenya, ingat, untuk data geospasial
‫perlu string.
‫Defaultnya harus titik.
‫Dan juga, itu tidak bisa apa-apa selain poin, oke.
‫Jadi titik.
‫Sekali lagi, kita memerlukan koordinat sebagai larik angka dan
‫juga, untuk semua lokasi lain
‫ini, kita masih ingin menentukan alamat dan deskripsi.
‫Jadi string dan di sini, saya juga ingin menentukan tanggal,
‫jadi sebagai angka.
‫Dan tanggal ini pada dasarnya akan menjadi
‫hari tur di mana orang akan pergi ke lokasi ini.
‫Sekarang, jika kita ingin
‫membuatnya lebih sederhana, kita bisa menghapus startLocation bersama-sama
‫dan kemudian cukup mendefinisikan lokasi
‫pertama sebagai startLocation dan menyetelnya ke hari nomor nol.
‫Baiklah, tetapi saya memutuskan untuk
‫juga memiliki startLocation sebagai bidang terpisah.
‫Oke, jadi ini adalah cara Anda membuat dokumen yang disematkan.
‫Ingat kita selalu perlu menggunakan array ini, oke.
‫Jadi dengan menentukan pada dasarnya sebuah array objek, ini
‫kemudian akan membuat dokumen baru di
‫dalam dokumen induk, yang dalam
‫hal ini adalah tur.
‫Baiklah, sekarang, untuk membuat beberapa lokasi,
‫saya sebenarnya akan mengimpor semua data asli kita.
‫Baiklah, jadi alih-alih membuat tur baru, saya
‫akan menghapus tur
‫yang kami miliki lalu mengimpor data lengkapnya.
‫Jadi di sini, di
‫dev-data, ingatlah bahwa sebelum kita mengimpor tours-simple.
‫Oke, jadi ini jenis data di sini.
‫Tetapi kami juga memiliki tur dan
‫ini sebenarnya memiliki lokasi dan lokasi awal.
‫Jadi saya tidak yakin di mana startLocation itu.
‫Ini dia.
‫Jadi beginilah cara kami menentukan startLocation dan
‫Anda melihat bahwa kami memiliki tipe yang disetel ke titik.
‫Kami memiliki array koordinat kami.
‫Dan tentu saja, kami memiliki deskripsi dan alamat.
‫Dan kemudian di bawah sini, di lokasi, kami memiliki array, yang
‫kemudian berisi satu objek untuk setiap lokasi.
‫Dan Anda melihat bahwa sebenarnya masing-masing dari mereka mendapatkan id mereka sendiri.
‫Jadi ini benar-benar dokumen
‫dan bukan hanya objek sederhana.
‫Baiklah, jadi mari kita pergi ke sini untuk mengimpor-dev-data dan
‫menggantinya di sini hanya dengan tur.
‫Berikan save dan kemudian ingat, pertama-tama kita harus menghapus dan
‫kemudian mengimpor.
‫Jadi pergi ke konsol lain di sini.
‫Kami sekarang ingin
‫menjalankan node, dev-data dan kemudian mengimpor,
‫jadi sebenarnya, di folder data, lalu impor.
‫Dan mulailah dengan menghapus dan mari kita tunggu dan memang, dan
‫sekarang, impor.
‫Dan ini dia.
‫Dan mari kita periksa Kompas sekarang.
‫Datanglah ke wisata kami.
‫Dan memang, Anda sekarang melihat startLocation di
‫sini sebagai objek.
‫Oke, dan ketika Anda membukanya, Anda
‫melihat semua data yang baru saja saya tunjukkan
‫sebelumnya di file JSON.
‫Benar, lalu di sini, juga, lokasi, yang Anda lihat
‫sebagai array, jadi ketikkan array.
‫Dan kemudian di sana, kita memiliki semua
‫objek ini dan setiap objek juga memiliki id objeknya.
‫Oke, dan sekali lagi, ini adalah bukti bahwa kami sekarang
‫telah membuat, menyematkan, atau mendenormalisasi kumpulan data,
‫jadi kumpulan data yang memiliki hubungan yang sangat dekat
‫dengan data tur.
‫Dan itulah mengapa kami memilih untuk
‫benar-benar menjadikannya bagian dari tur daripada membuat koleksinya
‫sendiri hanya untuk lokasi, bukan.
‫Jadi kita akan benar-benar menggunakan ini nanti
‫di bagian ini setelah kita mulai membuat beberapa kueri geospasial khusus.
‫Oke, dan dengan kueri geospasial, kita dapat
‫melakukan hal-hal yang sangat menakjubkan seperti
‫menemukan data lokasi yang paling dekat dengan titik tertentu
‫atau menemukan semua lokasi di dalam radius tertentu
‫atau bidang tertentu.
‫Dan sungguh, kemungkinannya benar-benar tidak terbatas, oke.
‫Jadi kita hanya akan melihat beberapa aplikasinya pada
‫akhir bagian ini karena untuk
‫saat ini, saya benar-benar hanya ingin menunjukkan kepada
‫Anda bagaimana kita dapat membuat kumpulan data tertanam seperti yang baru saja kita lakukan.