Mongoose adalah sebuah framework JavaScript yang umumnya digunakan pada aplikasi Node.js dengan database MongoDB. Pada artikel ini, Saya akan memperkenalkan kepada Anda tentang Mongoose dan MongoDB, dan yang lebih penting dimana teknologi ini sesuai dengan aplikasi Anda. Show
Apa itu MongoDB?Mari memulai dengan MongoDB. MongoDB adalah sebuah database yang menyimpan data Anda sebagai dokumen. Kebanyakan dokumen ini mirip seperti struktur JSON: { firstName: "Jamie", lastName: "Munro" } Sebuah dokumen kemudian diletakan dalam koleksi. Sebagai contoh, contoh dokumen diatas mendefinisikan sebuah obyek Salah satu dari faktor penentu MongoDB adalah fleksibilitasnya dalam masalah struktur. Meskipun pada contoh pertama, obyek Kemampuan untuk membuat obyek dinamis yang disimpan sebagai dokumen pada database adalah tempat dimana Mongoose bekerja. Apa itu Mongoose?Mongoose adalah sebuah Object Document Mapper (ODM). Ini berarti Mongoose mengizinkan Anda untuk mendefinisikan obyek dengan skema yang benar-benar diketik yang dipetakan ke sebuah dokumen MongoDB. Mongoose menyediakan jumlah fungsionalitas yang luar biasa yang berkaitan dengan pembuatan dan pengerjaan skema. Mongoose saat ini memiliki delapan tipe skema dimana propertinya disimpan seperti saat berada di MongoDB. Diantaranya:
Setiap tipe data memungkinkan Anda untuk menentukan:
Selanjutnya untuk opsi umum
ini, tipe data tertentu memungkinkan Anda untuk menyesuaikan lebih lanjut bagaimana data disimpan dan diambil dari database. Sebagai contoh, sebuah tipe data
Properti Sebagian besar dari delapan jenis data yang diizinkan seharusnya cukup familiar untuk Anda. Namun, ada beberapa pengecualian yang mungkin menjadi pengecualian bagi Anda, seperti Tipe data Tipe data Tipe data Tipe data Rekap SingkatSebelum melanjutkan dan menghasilkan beberapa kode, Saya ingin mengulang apa yang baru saja kita pelajari. MongoDB adalah database yang memungkinkan Anda menyimpan dokumen dengan struktur dinamis. Dokumen-dokumen ini disimpan di dalam koleksi. Mongoose adalah pustaka JavaScript yang memungkinkan Anda menentukan skema dengan data yang strongly-typed. Setelah skema didefinisikan, Mongoose memungkinkan Anda membuat Model berdasarkan skema tertentu. Model Mongoose kemudian dipetakan ke Dokumen MongoDB melalui definisi skema Model. Setelah Anda menentukan skema dan model Anda, Mongoose berisi banyak fungsi berbeda yang memungkinkan Anda untuk memvalidasi, menyimpan, menghapus, dan men-query data Anda menggunakan fungsi MongoDB yang umum. Saya akan membicarakan hal ini lebih dengan contoh kode yang konkrit untuk diikuti. Menginstall MongoDBSebelum kita dapat memulai membuat skema dan model Mongoose kita, MongoDB harus terinstal dan terkonfigurasi. Saya menyarankan untuk mengunjungi Halaman download MongoDB. Ada beberapa pilihan berbeda yang tersedia untuk menginstall. Saya telah terhubung ke Server Community. Hal ini memungkinkan Anda menginstal versi tertentu ke sistem operasi Anda. MongoDB juga menawarkan Server Enterprise Server dan instalasi bantuan cloud. Karena seluruh buku bisa ditulis saat menginstal, menyetel, dan memantau MongoDB, saya akan tetap dengan Server Community. Setelah anda selesai mendownload dna menginstall MongoDB untuk sistem operasi pilihan anda, Anda harus memulai database. Daripada membuat wheel baru, Saya menyarankan anda mengunjungi dokumentasi MongoDB's tentang bagaimana menginstall MongoDB Edisi Community. Saya akan menunggu di sini saat Anda mengkonfigurasi MongoDB. Bila sudah siap, kita bisa melanjutkan untuk menyiapkan Mongoose untuk terhubung ke database MongoDB yang baru diinstal. Menyiapkan MongooseMongoose adalah framework JavaScript, dan saya akan menggunakannya dalam aplikasi Node.js. Jika Anda sudah menginstal Node.js, Anda dapat melanjutkan ke langkah berikutnya. Jika Anda tidak menginstal Node.js, saya sarankan Anda memulai dengan mengunjungi Halaman Download Node.js dan pilih installer untuk sistem operasi Anda. Setelah Node.js telah disetel dan siap digunakan, Saya akan membuat aplikasi baru dan kemudian menginstal Mongoose NPM Package. Dengan command prompt yang disetel ke aplikasi yang Anda inginkan untuk diinstall, Anda dapat menjalankan perintah berikut: mkdir mongoose_basics cd mongoose_basics npm init Untuk inisialisasi aplikasi saya, saya biarkan semuanya ke nilai default. Sekarang saya akan menginstal paket mongoose sebagai berikut: npm install mongoose --save Dengan semua prasyarat yang dikonfigurasi, mari kita hubungkan ke database MongoDB. Saya telah menempatkan kode berikut di dalam file index.js karena saya memilihnya sebagai titik awal untuk aplikasi saya: var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mongoose_basics'); Baris pertama termasuk pustaka Fungsi mongoose.connect(uri, options, function(error) { // Check error in initial connection. There is no 2nd param to the callback. }); // Or using promises mongoose.connect(uri, options).then( () => { /** ready to use. The `mongoose.connect()` promise resolves to undefined. */ }, err => { /** handle initial connection error */ } ); Untuk menghindari pengantar potensial pada JavaScript Promises, Saya akan menggunakan cara pertama. Di bawah ini adalah file index.js yang telah diupdate: var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mongoose_basics', function (err) { if (err) throw err; console.log('Successfully connected'); }); Jika error terjadi saat menghubungkan ke database, exception akan dilempar dan proses selanjutnya akan dihentikan. Saat tidak terjadi error, Saya akan mengirim pesan sudah login ke console. Mongoose
sekarang telah disetel dan dihubungkan ke database yang disebut Setelah koneksi telah sukses, mari berpindah ke pendefinisian Skema Mongoose. Mendefinisikan Skema MongooseSaat pendahuluan, Saya menunjukan sebuah obyek var userSchema = mongoose.Schema({ firstName: String, lastName: String }); Ini adalah Skema yang sangat mendasar yang hanya berisi dua properti tanpa ada
attribut yang terkait dengannya. Mari memperluas contoh ini dengan mengkonversi properti first dan last name menjadi obyek child dari properti var userSchema = mongoose.Schema({ name: { firstName: String, lastName: String }, created: Date }); Seperti yang anda lihat, Mongoose memungkinkan saya untuk membuat skema yang sangat fleksibel dengan banyak kombinasi memungkinkan yang berbeda tentang bagaimana saya bisa mengorganisir data Saya. Pada contoh selanjutnya, Saya akan membuat dua skema baru yang akan mendemonstrasikan bagaimana cara membuat relasi ke skema yang lain: var authorSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, name: { firstName: String, lastName: String }, biography: String, twitter: String, facebook: String, linkedin: String, profilePicture: Buffer, created: { type: Date, default: Date.now } }); Contoh diatas adalah skema Perluasan dari skema Untuk melengkapi contoh skema, mari membuat skema var bookSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, title: String, summary: String, isbn: String, thumbnail: Buffer, author: { type: mongoose.Schema.Types.ObjectId, ref: 'Author' }, ratings: [ { summary: String, detail: String, numberOfStars: Number, created: { type: Date, default: Date.now } } ], created: { type: Date, default: Date.now } }); Skema Mongoose
memungkinkan anda kelenturan dalam membuat skema dengan drferesi ke skema yang lain atau, sebagaimana contoh diatas dengan properti Membuat dan Menyimpan Model MongooseSetelah skema var Author = mongoose.model('Author', authorSchema); var Book = mongoose.model('Book', bookSchema); Sebuah Model Mongoose, saat disimpan, membuat sebuah dokumen di MongoDB dengan properti yang didefinisikan oleh skema asal. Untuk menunjukan pembuatan dan penyimpanan sebuah obyek, pada contoh yang selanjutnya, Saya akan membuat beberapa obyek: Sebuah Model var jamieAuthor = new Author { _id: new mongoose.Types.ObjectId(), name: { firstName: 'Jamie', lastName: 'Munro' }, biography: 'Jamie is the author of ASP.NET MVC 5 with Bootstrap and Knockout.js.', twitter: 'https://twitter.com/endyourif', facebook: 'https://www.facebook.com/End-Your-If-194251957252562/' }; jamieAuthor.save(function(err) { if (err) throw err; console.log('Author successfully saved.'); var mvcBook = new Book { _id: new mongoose.Types.ObjectId(), title: 'ASP.NET MVC 5 with Bootstrap and Knockout.js', author: jamieAuthor._id, ratings:[{ summary: 'Great read' }] }; mvcBook.save(function(err) { if (err) throw err; console.log('Book successfully saved.'); }); var knockoutBook = new Book { _id: new mongoose.Types.ObjectId(), title: 'Knockout.js: Building Dynamic Client-Side Web Applications', author: jamieAuthor._id }; knockoutBook.save(function(err) { if (err) throw err; console.log('Book successfully saved.'); }); }); Pada contoh di atas, saya tanpa malu-malu menghubungkan referensi ke dua buku terbaru saya. Contohnya dimulai dengan membuat dan menyimpan Untuk membuat referensi ke Author, obyek buku mereferesi kedua skema Validasi Data Sebelum DisimpanUmumnya untuk data yang akan menghasilkan model untuk diisi oleh formulir pada halaman web. Karena itu, ada baiknya memvalidasi data ini sebelum menyimpan Model ke MongoDB. Pada contoh selanjutnya, Saya telah menguppdate skema author sebelumnya untuk menambahkan validasi dari properti berikut: var authorSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, name: { firstName: { type: String, required: true }, lastName: String }, biography: String, twitter: { type: String, validate: { validator: function(text) { return text.indexOf('https://twitter.com/') === 0; }, message: 'Twitter handle must start with https://twitter.com/' } }, facebook: { type: String, validate: { validator: function(text) { return text.indexOf('https://www.facebook.com/') === 0; }, message: 'Facebook must start with https://www.facebook.com/' } }, linkedin: { type: String, validate: { validator: function(text) { return text.indexOf('https://www.linkedin.com/') === 0; }, message: 'LinkedIn must start with https://www.linkedin.com/' } }, profilePicture: Buffer, created: { type: Date, default: Date.now } }); Properti Properti Mencari dan Mengupdate DataPengantar Mongoose tidak akan lengkap tanpa contoh mencari untuk record dan mengupdate satu atau lebih properti pada objek tersebut. Mongoose menyediakan beberapa fungsi berbeda untuk menemukan data untuk Model tertentu. Fungsi tersebut adalah Fungsi Book.find({ title: /mvc/i }).exec(function(err, books) { if (err) throw err; console.log(books); }); Di dalam fungsi Fungsi find call juga dirantai ke metode query lainnya, seperti Mari kita memperluas contoh sebelumnya untuk membatasi hasil kita ke lima buku pertama dan mengurutkan pada tanggal yang tercipta secara menurun. Fungsi ini akan mengembalikan lima buku terbaru yang berisi "mvc" di judulnya. Book.find({ title: /mvc/i }).sort('-created') .limit(5) .exec(function(err, books) { if (err) throw err; console.log(books); }); Setelah menerapkan fungsi Seperti yang saya sebutkan sebelumnya, Author.findById('59b31406beefa1082819e72f', function(err, author) { if (err) throw err; console.log(author); });
Begitu sebuah objek telah dikembalikan, Anda dapat memodifikasi propertinya untuk mengupdatenya. Setelah Anda membuat perubahan yang diperlukan, Anda memanggil metode Author.findById('59b31406beefa1082819e72f', function(err, author) { if (err) throw err; author.linkedin = 'https://www.linkedin.com/in/jamie-munro-8064ba1a/'; author.save(function(err) { if (err) throw err; console.log('Author updated successfully'); }); }); Setelah
author berhasil diambil, properti Mongoose juga menawarkan dua fungsi tambahan yang membuat pencarian
objek dan menyimpannya dalam satu langkah dengan fungsi yang diberi nama dengan tepat: Author.findByIdAndUpdate('59b31406beefa1082819e72f', { linkedin: 'https://www.linkedin.com/in/jamie-munro-8064ba1a/' }, function(err, author) { if (err) throw err; console.log(author); }); Pada contoh sebelumnya, properti yang akan diperbarui disupply sebagai objek ke parameter kedua dari fungsi Contoh Kode TerakhirSepanjang artikel ini, saya memberikan potongan kecil kode untuk mengidentifikasi tindakan yang sangat spesifik, seperti membuat skema, membuat model, dll. Mari kita menggabungkan semuanya dalam contoh lengkap. Pertama, Saya membuat dua file tambahan: Mari memulai dengan file author.js: var mongoose = require('mongoose'); var authorSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, name: { firstName: { type: String, required: true }, lastName: String }, biography: String, twitter: { type: String, validate: { validator: function(text) { return text.indexOf('https://twitter.com/') === 0; }, message: 'Twitter handle must start with https://twitter.com/' } }, facebook: { type: String, validate: { validator: function(text) { return text.indexOf('https://www.facebook.com/') === 0; }, message: 'Facebook must start with https://www.facebook.com/' } }, linkedin: { type: String, validate: { validator: function(text) { return text.indexOf('https://www.linkedin.com/') === 0; }, message: 'LinkedIn must start with https://www.linkedin.com/' } }, profilePicture: Buffer, created: { type: Date, default: Date.now } }); var Author = mongoose.model('Author', authorSchema); module.exports = Author; Selanjutnya datangnya file var mongoose = require('mongoose'); var bookSchema = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, title: String, summary: String, isbn: String, thumbnail: Buffer, author: { type: mongoose.Schema.Types.ObjectId, ref: 'Author' }, ratings: [ { summary: String, detail: String, numberOfStars: Number, created: { type: Date, default: Date.now } } ], created: { type: Date, default: Date.now } }); var Book = mongoose.model('Book', bookSchema); module.exports = Book; Dan Terakhir, file var mongoose = require('mongoose'); var Author = require('./author'); var Book = require('./book'); mongoose.connect('mongodb://localhost/mongoose_basics', function (err) { if (err) throw err; console.log('Successfully connected'); var jamieAuthor = new Author({ _id: new mongoose.Types.ObjectId(), name: { firstName: 'Jamie', lastName: 'Munro' }, biography: 'Jamie is the author of ASP.NET MVC 5 with Bootstrap and Knockout.js.', twitter: 'https://twitter.com/endyourif', facebook: 'https://www.facebook.com/End-Your-If-194251957252562/' }); jamieAuthor.save(function(err) { if (err) throw err; console.log('Author successfully saved.'); var mvcBook = new Book({ _id: new mongoose.Types.ObjectId(), title: 'ASP.NET MVC 5 with Bootstrap and Knockout.js', author: jamieAuthor._id, ratings:[{ summary: 'Great read' }] }); mvcBook.save(function(err) { if (err) throw err; console.log('Book successfully saved.'); }); var knockoutBook = new Book({ _id: new mongoose.Types.ObjectId(), title: 'Knockout.js: Building Dynamic Client-Side Web Applications', author: jamieAuthor._id }); knockoutBook.save(function(err) { if (err) throw err; console.log('Book successfully saved.'); }); }); }); Pada contoh diatas, semua aksi Mongoose berisi di dalamnya fungsi Dengan berjalannya MongoDB, anda sekara bisa menjalankan aplikasi Node.js yang lengkap dengan perintah sebagai berikut: node index.js Setelah saya menyimpan beberapa data saya ke database saya, Saya perbarui file var mongoose = require('mongoose'); var Author = require('./author'); var Book = require('./book'); mongoose.connect('mongodb://localhost/mongoose_basics', function (err) { if (err) throw err; console.log('Successfully connected'); Book.find({ title: /mvc/i }).sort('-created') .limit(5) .exec(function(err, books) { if (err) throw err; console.log(books); }); Author.findById('59b31406beefa1082819e72f', function(err, author) { if (err) throw err; author.linkedin = 'https://www.linkedin.com/in/jamie-munro-8064ba1a/'; author.save(function(err) { if (err) throw err; console.log('Author updated successfully'); }); }); Author.findByIdAndUpdate('59b31406beefa1082819e72f', { linkedin: 'https://www.linkedin.com/in/jamie-munro-8064ba1a/' }, function(err, author) { if (err) throw err; console.log(author); }); }); Sekali lagi, Anda dapat menjalankan aplikasi dengan perintah: KesimpulanSetelah membaca artikel ini, Anda seharusnya dapat membuat Skema dan Model Mongol yang sangat fleksibel, menerapkan validasi sederhana atau kompleks, membuat dan memperbarui dokumen, dan akhirnya mencari dokumen yang telah dibuat. Semoga sekarang Anda merasa nyaman menggunakan Mongoose. Jika Anda ingin belajar lebih banyak, saya sarankan untuk meninjau ulang Panduan Mongoose yang menyelidiki topik yang lebih maju seperti populasi, middleware, janji, dll. Selamat Berburu (referensi hewan Mongoose yang buruk)! MongoDB digunakan untuk apa?MongoDB adalah sebuah database berbasis dynamic schema yang dapat digunakan untuk menyimpan berbagai variasi data, mulai dari data tak terstruktur hingga terstruktur. Dynamic schema ini juga memungkinkan kamu untuk menyimpan data tanpa perlu mendefinisikan skema sebelum mulai menyimpan data.
MongoDB menggunakan bahasa apa?MongoDB sendiri ditulis dengan bahasa C++ dan telah tersedia untuk berbagai jenis bahasa pemrograman. Fitur utama dari mongoDB antara lain: model document-oriented storage. dukungan penuh untuk indexing data.
Mengapa MongoDB disebut database berorientasi dokumen?Mengapa Menggunakan MongoDB? 1. Berorientasi pada dokumen-Karena MongoDB adalah database tipe NoSQL, alih-alih memiliki data dalam format tipe relasional, MongoDB menyimpan data dalam dokumen. Ini membuat MongoDB sangat fleksibel dan mudah beradaptasi dengan situasi dan persyaratan dunia bisnis nyata.
Jelaskan langkah langkah dalam instalasi MongoDB?Berikut ini adalah langkah-langkah cara install MongoDB di Ubuntu 20.04.. Update Server. Selanjutnya, yang perlu Anda lakukan adalah meng-update Ubuntu 20.04 menggunakan perintah berikut: sudo apt-get update.. 2. Install MongoDB. ... . Aktifkan MongoDB. ... . 4. Cek Status MongoDB.. |