Bekerja dengan dokumen - Amazon DocumentDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan dokumen

Sebagai database dokumen, Amazon DocumentDB memudahkan untuk menyimpan, menanyakan, dan mengindeks data. JSON Di Amazon DocumentDB, koleksi analog dengan tabel dalam basis data relasional, kecuali tidak ada skema tunggal ditegakkan pada semua dokumen. Koleksi memungkinkan Anda mengelompokkan dokumen yang serupa bersama-sama sembari menjaga mereka semua dalam basis data yang sama, tanpa mengharuskan bahwa mereka identik dalam struktur.

Dengan menggunakan contoh dokumen dari bagian sebelumnya, kemungkinan bahwa Anda akan memiliki koleksi untuk reading_material dan office_supplies. Merupakan tanggung jawab perangkat lunak Anda untuk menegakkan koleksi yang memiliki dokumen tersebut.

Contoh berikut menggunakan API MongoDB untuk menunjukkan cara menambahkan, menanyakan, memperbarui, dan menghapus dokumen.

Menambahkan dokumen

Di Amazon DocumentDB, basis data dibuat saat pertama kali Anda menambahkan dokumen ke koleksi. Dalam contoh ini, Anda membuat koleksi yang diberi nama example di basis data test, yang merupakan basis data default ketika Anda terhubung ke klaster. Karena koleksi secara implisit dibuat ketika dokumen pertama dimasukkan, tidak ada pemeriksaan kesalahan nama koleksi. Oleh karena itu, salah ketik dalam nama koleksi, seperti eexample alih-alih example, akan membuat dan menambahkan dokumen ke koleksi eexample alih-alih ke koleksi yang dimaksudkan. Pemeriksaan kesalahan harus ditangani oleh aplikasi Anda.

Contoh berikut menggunakan API MongoDB untuk menambahkan dokumen.

Menambahkan satu dokumen

Untuk menambahkan dokumen tunggal ke koleksi, gunakan operasi insertOne( {} ) dengan dokumen yang ingin Anda tambahkan ke koleksi.

db.example.insertOne( { "Item": "Ruler", "Colors": ["Red","Green","Blue","Clear","Yellow"], "Inventory": { "OnHand": 47, "MinOnHand": 40 }, "UnitPrice": 0.89 } )

Output dari operasi ini terlihat seperti berikut (JSONformat).

{ "acknowledged" : true, "insertedId" : ObjectId("5bedafbcf65ff161707de24f") }

Menambahkan beberapa dokumen

Untuk menambahkan beberapa dokumen ke koleksi, gunakan operasi insertMany( [{},...,{}] ) dengan daftar dokumen yang ingin Anda tambahkan ke koleksi. Meskipun dokumen dalam daftar khusus ini memiliki skema yang berbeda, mereka semua dapat ditambahkan ke koleksi yang sama.

db.example.insertMany( [ { "Item": "Pen", "Colors": ["Red","Green","Blue","Black"], "Inventory": { "OnHand": 244, "MinOnHand": 72 } }, { "Item": "Poster Paint", "Colors": ["Red","Green","Blue","Black","White"], "Inventory": { "OnHand": 47, "MinOnHand": 50 } }, { "Item": "Spray Paint", "Colors": ["Black","Red","Green","Blue"], "Inventory": { "OnHand": 47, "MinOnHand": 50, "OrderQnty": 36 } } ] )

Output dari operasi ini terlihat seperti berikut (JSONformat).

{ "acknowledged" : true, "insertedIds" : [ ObjectId("5bedb07941ca8d9198f5934c"), ObjectId("5bedb07941ca8d9198f5934d"), ObjectId("5bedb07941ca8d9198f5934e") ] }

Menanyakan dokumen

Terkadang, Anda mungkin perlu mencari inventaris toko online Anda sehingga pelanggan dapat melihat dan membeli apa yang Anda jual. Melakukan kueri sebuah koleksi relatif mudah, apakah Anda ingin semua dokumen dalam koleksi atau hanya dokumen yang memenuhi kriteria tertentu.

Untuk melakukan kueri dokumen, gunakan operasi find(). Perintah find() memiliki parameter dokumen tunggal yang mendefinisikan kriteria yang akan digunakan dalam memilih dokumen yang akan dikembalikan. Output dari find() adalah dokumen yang diformat sebagai satu baris teks tanpa jeda baris. Untuk memformat dokumen output agar lebih mudah dibaca, gunakan find().pretty(). Semua contoh dalam topik ini menggunakan .pretty() untuk memformat keluaran.

Gunakan empat dokumen yang Anda masukkan ke dalam koleksi example dalam dua latihan sebelumnya — insertOne() dan insertMany().

Mengambil semua dokumen dalam koleksi

Untuk mengambil semua dokumen dalam koleksi Anda, gunakan operasi find() dengan dokumen kueri yang kosong.

Kueri berikut mengembalikan semua dokumen di dalam koleksi example.

db.example.find( {} ).pretty()

Mengambil dokumen yang cocok dengan nilai bidang

Untuk mengambil semua dokumen yang cocok dengan bidang dan nilai, gunakan operasi find() dengan dokumen kueri yang mengidentifikasi bidang dan nilai untuk mencocokkan.

Menggunakan dokumen sebelumnya, kueri ini mengembalikan semua dokumen di mana bidang "Item" sama dengan "Pena".

db.example.find( { "Item": "Pen" } ).pretty()

Mengambil dokumen yang cocok dengan dokumen yang disematkan

Untuk menemukan semua dokumen yang cocok dengan dokumen tersemat, gunakan operasi find() dengan dokumen kueri yang menentukan nama dokumen tersemat dan semua bidang dan nilai untuk dokumen tersemat.

Saat mencocokkan dokumen yang ditanamkan, dokumen yang ditanamkan tersebut harus memiliki nama yang sama seperti dalam kueri. Selain itu, bidang dan nilai dalam dokumen yang ditanamkan harus cocok dengan kueri.

Kueri berikut hanya mengembalikan dokumen "Cat Poster". Ini karena "Pena" memiliki nilai yang berbeda untuk "OnHand" dan "MinOnHand", dan "Cat Semprot" memiliki satu bidang (OrderQnty) lebih banyak daripada dokumen kueri.

db.example.find({"Inventory": { "OnHand": 47, "MinOnHand": 50 } } ).pretty()

Mengambil dokumen yang cocok dengan nilai bidang dalam dokumen yang disematkan

Untuk menemukan semua dokumen yang cocok dengan dokumen tersemat, gunakan operasi find() dengan dokumen kueri yang menentukan nama dokumen tersemat dan semua bidang dan nilai untuk dokumen tersemat.

Mengingat dokumen sebelumnya, kueri berikut menggunakan "notasi titik" untuk menentukan dokumen yang ditanamkan dan bidang yang diminati. Setiap dokumen yang cocok dengan ini dikembalikan, terlepas dari apa bidang lain mungkin hadir dalam dokumen tertanam. Kueri mengembalikan "Cat Poster" dan "Cat Semprot" karena keduanya cocok dengan bidang dan nilai yang ditentukan.

db.example.find({"Inventory.OnHand": 47, "Inventory.MinOnHand": 50 }).pretty()

Mengambil dokumen yang cocok dengan aArray

Untuk menemukan semua dokumen yang cocok dengan array, gunakan operasi find() dengan nama array yang Anda minati dan semua nilai dalam array itu. Kueri mengembalikan semua dokumen yang memiliki array dengan nama itu di mana nilai arraynya identik dengan dan dalam urutan yang sama seperti dalam kueri.

Kueri berikut hanya mengembalikan "Pena" karena "Cat Poster" memiliki warna tambahan (Putih), dan "Cat Semprot" memiliki warna dalam urutan yang berbeda.

db.example.find( { "Colors": ["Red","Green","Blue","Black"] } ).pretty()

Mengambil dokumen yang cocok dengan nilai dalam array

Untuk menemukan semua dokumen yang memiliki nilai susunan tertentu, gunakan operasi find() dengan nama susunan dan nilai yang menjadi perhatian Anda.

db.example.find( { "Colors": "Red" } ).pretty()

Operasi sebelumnya mengembalikan ketiga dokumen karena masing-masing memiliki array bernama Colors dan nilai "Red" di suatu tempat dalam array. Jika Anda menentukan nilai "White", kueri hanya akan mengembalikan "Cat Poster."

Mengambil dokumen menggunakan operator

Kueri berikut ini mengembalikan semua dokumen di mana nilai "Inventory.OnHand" adalah kurang dari 50.

db.example.find( { "Inventory.OnHand": { $lt: 50 } } )

Untuk daftar operator kueri yang didukung, lihat Operator kueri dan proyeksi.

Memperbarui dokumen

Biasanya, dokumen Anda tidak statis dan diperbarui sebagai bagian dari alur kerja aplikasi Anda. Contoh berikut ini menunjukkan beberapa cara yang dapat lakukan Anda untuk memperbarui dokumen.

Untuk memperbarui dokumen yang ada, gunakan operasi update(). Operasi update() memiliki dua parameter dokumen. Dokumen pertama mengidentifikasi dokumen atau dokumen-dokumen mana yang akan diperbarui. Dokumen kedua menentukan pembaruan yang akan dilakukan.

Ketika Anda memperbarui bidang yang ada — apakah bidang itu adalah bidang sederhana, susunan, atau dokumen tersemat -— Anda harus menentukan nama bidang dan nilainya. Pada akhir operasi, seolah-olah bidang dalam dokumen lama telah digantikan oleh bidang dan nilai baru.

Memperbarui nilai bidang yang ada

Gunakan empat dokumen berikut ini yang Anda tambahkan sebelumnya untuk operasi pembaruan berikut ini.

{ "Item": "Ruler", "Colors": ["Red","Green","Blue","Clear","Yellow"], "Inventory": { "OnHand": 47, "MinOnHand": 40 }, "UnitPrice": 0.89 }, { "Item": "Pen", "Colors": ["Red","Green","Blue","Black"], "Inventory": { "OnHand": 244, "MinOnHand": 72 } }, { "Item": "Poster Paint", "Colors": ["Red","Green","Blue","Black","White"], "Inventory": { "OnHand": 47, "MinOnHand": 50 } }, { "Item": "Spray Paint", "Colors": ["Black","Red","Green","Blue"], "Inventory": { "OnHand": 47, "MinOnHand": 50, "OrderQnty": 36 } }
Untuk memperbarui bidang sederhana

Untuk memperbarui bidang sederhana, gunakan update() dengan $set untuk menentukan nama bidang dan nilai baru. Contoh berikut ini mengubah Item dari “Pen” ke “Gel Pen”.

db.example.update( { "Item" : "Pen" }, { $set: { "Item": "Gel Pen" } } )

Hasil dari operasi ini terlihat seperti berikut ini.

{ "Item": "Gel Pen", "Colors": ["Red","Green","Blue","Black"], "Inventory": { "OnHand": 244, "MinOnHand": 72 } }
Untuk memperbarui susunan

Contoh berikut ini menggantikan susunan warna yang ada dengan susunan baru yang mencakup Orange dan menghapus White dari daftar warna. Daftar warna baru adalah dalam urutan yang ditentukan dalam operasi update().

db.example.update( { "Item" : "Poster Paint" }, { $set: { "Colors": ["Red","Green","Blue","Orange","Black"] } } )

Hasil dari operasi ini terlihat seperti berikut ini.

{ "Item": "Poster Paint", "Colors": ["Red","Green","Blue","Orange","Black"], "Inventory": { "OnHand": 47, "MinOnHand": 50 } }

Menambahkan Bidang Baru

Untuk mengubah dokumen dengan menambahkan satu atau lebih bidang baru, gunakan operasi update() dengan dokumen kueri yang mengidentifikasi dokumen yang akan dimasukkan dan bidang dan nilai baru yang akan dimasukkan menggunakan operator $set.

Contoh berikut ini menambahkan bidang UnitPrice dengan nilai 3.99 ke dokumen Spray Paints. Perhatikan bahwa nilai 3.99 adalah numerik dan bukan string.

db.example.update( { "Item": "Spray Paint" }, { $set: { "UnitPrice": 3.99 } } )

Hasil dari operasi ini terlihat seperti berikut (JSONformat).

{ "Item": "Spray Paint", "Colors": ["Black","Red","Green","Blue"], "Inventory": { "OnHand": 47, "MinOnHand": 50, "OrderQnty": 36 }, "UnitPrice": 3.99 }

Mengganti dokumen yang disematkan

Untuk mengubah dokumen dengan mengganti dokumen tersemat, gunakan operasi update() dengan dokumen yang mengidentifikasi dokumen tersemat dan bidang dan nilai barunya menggunakan operator $set.

Mengingat dokumen berikut.

db.example.insert({ "DocName": "Document 1", "Date": { "Year": 1987, "Month": 4, "Day": 18 } })
Untuk mengganti dokumen tersemat

Contoh berikut ini menggantikan dokumen Tanggal saat ini dengan yang dokumen baru yang hanya memiliki bidang Month dan Day; Year telah dihilangkan.

db.example.update( { "DocName" : "Document 1" }, { $set: { "Date": { "Month": 4, "Day": 18 } } } )

Hasil dari operasi ini terlihat seperti berikut ini.

{ "DocName": "Document 1", "Date": { "Month": 4, "Day": 18 } }

Memasukkan bidang baru ke dalam dokumen yang disematkan

Untuk menambahkan bidang ke dokumen tersemat

Untuk mengubah dokumen dengan menambahkan satu atau lebih bidang baru ke dokumen tersemat, gunakan operasi update() dengan dokumen yang mengidentifikasi dokumen tersemat dan “notasi dot” untuk menentukan dokumen tersemat dan bidang dan nilai baru yang akan dimasukkan menggunakan operator $set.

Mengingat dokumen berikut ini, kode berikut ini menggunakan “notasi dot” untuk memasukkan bidang Year dan DoW ke dokumen Dateyang disematkan, dan Words ke dalam dokumen induk.

{ "DocName": "Document 1", "Date": { "Month": 4, "Day": 18 } }
db.example.update( { "DocName" : "Document 1" }, { $set: { "Date.Year": 1987, "Date.DoW": "Saturday", "Words": 2482 } } )

Hasil dari operasi ini terlihat seperti berikut ini.

{ "DocName": "Document 1", "Date": { "Month": 4, "Day": 18, "Year": 1987, "DoW": "Saturday" }, "Words": 2482 }

Menghapus bidang dari dokumen

Untuk mengubah dokumen dengan menghapus bidang dari dokumen, gunakan operasi update() dengan dokumen kueri yang mengidentifikasi dokumen yang akan dihapus bidangnya, dan operator $unset untuk menentukan bidang yang akan dihapus.

Contoh berikut ini akan menghapus bidang Wordsdari dokumen sebelumnya.

db.example.update( { "DocName" : "Document 1" }, { $unset: { Words:1 } } )

Hasil dari operasi ini terlihat seperti berikut ini.

{ "DocName": "Document 1", "Date": { "Month": 4, "Day": 18, "Year": 1987, "DoW": "Saturday" } }

Menghapus bidang dari beberapa dokumen

Untuk mengubah dokumen dengan menghapus bidang dari beberapa dokumen, gunakan operasi update() dengan operator $unset dan multi diatur ke true.

Contoh berikut ini akan menghapus bidang Inventory dari semua dokumen dalam koleksi contoh. Jika dokumen tidak memiliki bidang Inventory, tidak ada tindakan yang dilakukan pada dokumen tersebut. Jika multi: true dihilangkan, tindakan dilakukan hanya pada dokumen pertama yang memenuhi kriteria.

db.example.update( {}, { $unset: { Inventory:1 } }, { multi: true } )

Menghapus dokumen

Untuk menghapus dokumen dari basis data Anda, gunakan operasi remove(), yang menentukan dokumen yang akan dihapus. Kode berikut ini menghapus “Gel Pen” dari koleksi example Anda.

db.example.remove( { "Item": "Gel Pen" } )

Untuk menghapus semua dokumen dari basis data Anda, gunakan operasi remove() dengan kueri kosong, sebagaimana ditunjukkan berikut ini.

db.example.remove( { } )