Bisakah kita menggunakan array di mongodb?

Operator $push dan $pull adalah bagian dari operator array yang dirancang untuk memodifikasi array dalam dokumen MongoDB. Dalam tutorial ini, saya akan menunjukkan cara kerja operator push dan pull dan cara menggunakannya dengan pengubah dan kondisi tambahan

(Artikel ini adalah bagian dari Panduan MongoDB kami. Gunakan menu sebelah kanan untuk menavigasi. )

Apa itu operator push dan pull?

Dorong dan Tarik adalah dua operasi yang digunakan untuk menambah dan menghapus elemen dari array dalam dokumen MongoDB. Elemen push dan pull dilakukan masing-masing menggunakan operator MongoDB $push dan $pull

  • Operator $push menambahkan nilai tertentu ke array
  • Operator $pull menghapus nilai dari array yang cocok dengan kondisi tertentu

Sintaks dasar operator $push

{ $push: { <field1>: <value1>, .. } }

Sintaks dasar dari operator $pull

{ $pull: { <field1>: <value|condition>, .. } }
_

Mari kita lihat masing-masing secara lebih mendetail, termasuk cara kerjanya dan bagaimana Anda dapat menggunakannya

Bagaimana operator MongoDB $push bekerja

Anda dapat melihat operator $push mengambil dua argumen

  • Bidang larik
  • Nilai yang akan ditambahkan ke bidang larik yang ditentukan

Jika bidang array tidak ada dalam dokumen, operator $push akan membuat bidang array baru. Namun, jika kolom yang ditentukan bukan array, MongoDB akan mengembalikan error

pengubah operator $push

Fungsionalitas operator $push dapat diperluas lebih lanjut menggunakan pengubah berikut

  • $masing-masing. Pengubah $each digunakan untuk menambahkan beberapa nilai ke array. Jika operator $each tidak ditentukan, semua nilai dalam operator $push akan ditambahkan sebagai item tunggal ke bidang larik dalam dokumen
  • $irisan. Ini membatasi jumlah elemen dalam array. Namun, ini harus digunakan bersamaan dengan pengubah $each
  • $sort. Pengubah $sort mengurutkan item dalam array. Pengubah ini juga membutuhkan penggunaan $each pengubah
  • $posisi. Operator $push menambahkan item baru ke akhir array secara default. Gunakan pengubah $position jika Anda ingin secara eksplisit menentukan lokasi tempat item harus ditambahkan

Operasi $push dilakukan dalam urutan berikut, terlepas dari urutan pengubah yang didefinisikan

  1. Perbarui array untuk menambahkan elemen di posisi yang ditentukan
  2. Urutkan array jika pengubah $sort ditentukan
  3. Iris array jika pengubah $slice ditentukan
  4. Menyimpan array

Selanjutnya, kita akan melihat bagaimana kita dapat menggunakan operasi MongoDB $push untuk memanipulasi dokumen. Saya akan menunjukkan beberapa contoh, jadi lompatlah ke contoh yang Anda butuhkan

Untuk kumpulan data dasar untuk contoh ini, saya akan menggunakan koleksi "vehicledetails".

db.vehicledetails.find().pretty()

Hasil

Bisakah kita menggunakan array di mongodb?

Tambahkan satu nilai ke array

Mari kita lihat bagaimana kita bisa menambahkan nilai tunggal ke sebuah array ketika field array ada, dan itu tidak ada. Dalam semua contoh, kolom “_id” digunakan untuk menunjukkan dokumen mana yang harus ditambahkan array

Contoh. Tidak Ada Bidang Larik

Bidang array baru akan dibuat dengan nama bidang yang ditentukan dalam operator $push

db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"vehicle_colours": "red"}})

Hasil

Bisakah kita menggunakan array di mongodb?

Contoh. Ketika Bidang array hadir

Item baru akan ditambahkan di akhir array

db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"vehicle_colours": "green"}})
_

Hasil

Bisakah kita menggunakan array di mongodb?

Jika kami mencoba menggunakan operator $push untuk bidang non-array, itu akan menghasilkan kesalahan. Kode berikut mengembalikan kesalahan saat kami mencoba menambahkan nilai ke bidang non-array "make"

db.vehicledetails.update({"_id": ObjectId("5fbc52f05f9a62418038240d")}, {$push: {"make": "green"}})

Hasil

Bisakah kita menggunakan array di mongodb?

Tambahkan Banyak Nilai ke Array

Anda dapat menambahkan beberapa nilai ke array dengan atau tanpa pengubah $each

Contoh. Beberapa Nilai tanpa $setiap pengubah

Jika pengubah $each tidak ada, MongoDB akan menambahkan semua nilai sebagai nilai tunggal ke bidang larik yang ditentukan

db.vehicledetails.update({"_id": ObjectId("5fbc52f55f9a62418038240e")}, {$push: {"vehicle_colours": ["blue", "red", "yellow"]}})
_

Hasil

Bisakah kita menggunakan array di mongodb?

Di sini, Anda dapat melihat "biru", "merah", dan "kuning" adalah elemen dari array yang baru dibuat. Tapi larik itu hanyalah salah satu elemen dari larik “vehical_colours”.

Contoh. Beberapa Nilai dengan $setiap pengubah

Ketika operasi $push didefinisikan dengan pengubah $each, setiap elemen dalam operasi $push akan ditambahkan ke array sebagai item individual

db.vehicledetails.update({"_id": ObjectId("5fbc52f55f9a62418038240e")}, {$push: {"vehicle_colours": { $each :["blue", "red", "yellow"]}}})

Hasil

Bisakah kita menggunakan array di mongodb?

Di sini, "vehicle_colours" memiliki tiga elemen setelah operasi $push

Menggunakan Pengubah $sort dan $slice

Pada bagian ini, kami akan mendemonstrasikan cara menggunakan pengubah $sort dan $slice menggunakan dokumen berikut dalam koleksi "vehicledetails"

Bisakah kita menggunakan array di mongodb?

Mari kita tambahkan warna "perak" ke kolom array "vehicle_colours" dan urutkan isinya menurut abjad (urutan menaik)

db.vehicledetails.update({"_id": ObjectId("5fbc52fb5f9a62418038240f")}, {$push: {"vehicle_colours": { $each :["silver", "orange"], $sort: 1}}})
_

Hasil

Bisakah kita menggunakan array di mongodb?

Output di atas menunjukkan kepada kita bahwa warna baru telah ditambahkan, dan larik telah diurutkan menurut abjad. Dalam contoh berikut, kami akan menambahkan warna "biru tua" ke bidang array sambil mengurutkan berdasarkan abjad dan menggunakan pengubah $slice untuk membatasi array menjadi 5 elemen

db.vehicledetails.update({"_id": ObjectId("5fbc52fb5f9a62418038240f")}, {$push: {"vehicle_colours": { $each :["dark blue"], $sort: 1, $slice: 5}}})
_

Hasil

Bisakah kita menggunakan array di mongodb?

Menggunakan Pengubah $position

Pengubah $position digunakan untuk menentukan lokasi dalam array di mana item baru harus ditambahkan. Ini akan mengesampingkan perilaku default menambahkan item ke akhir array

Pada contoh berikut, kita akan menambahkan warna “putih” di awal kolom array “vehicle_colours”. Dalam pengubah "$position", nol (0) digunakan untuk menunjukkan posisi pertama (indeks 0) dari array

{ $pull: { <field1>: <value|condition>, .. } }
_0

Hasil

Bisakah kita menggunakan array di mongodb?

Cara kerja operator $pull MongoDB

Operator $pull digunakan untuk menghapus semua contoh nilai atau nilai dari dokumen MongoDB yang cocok dengan kondisi yang ditentukan. Jika array berisi dokumen yang disematkan atau disarangkan, kondisi operator $pull yang ditentukan akan diterapkan ke setiap elemen array seolah-olah setiap elemen array adalah dokumen dalam kumpulan

Ketika nilai yang ditentukan untuk dihapus adalah array, operator $pull hanya menghapus elemen dalam array yang cocok dengan nilai persis yang ditentukan, termasuk urutan elemen didefinisikan. Jika nilai yang ditentukan untuk dihapus adalah dokumen, operator $pull akan menghapus elemen yang cocok dengan bidang dan nilai yang ditentukan. Dalam contoh ini urutan bidang dibuang

Sekarang saya akan memandu Anda melalui beberapa contoh operator $pull. Lompat ke yang Anda butuhkan

Dalam contoh ini, kami akan menggunakan kumpulan data berikut untuk menunjukkan

Bisakah kita menggunakan array di mongodb?

Hapus satu item dari array

Di sini, kami akan menghapus nilai tunggal "2018" dari kolom array "model_year". Kolom “_id” digunakan untuk menunjukkan dokumen tempat operasi $pull harus dilakukan

{ $pull: { <field1>: <value|condition>, .. } }
_1

Hasil

Bisakah kita menggunakan array di mongodb?

Hapus Semua Item yang Sama dengan Nilai yang Ditentukan

Dalam contoh ini, kami akan menggunakan koleksi "vehicledetails" untuk menghapus warna "biru" dan "hijau" dari kolom array "vehicle_colours" dan menghapus model tahun 2020 dari kolom array "model_year"

{ $pull: { <field1>: <value|condition>, .. } }
_2

Hasil

Bisakah kita menggunakan array di mongodb?

Hapus Item yang Cocok dengan Kondisi $pull yang Ditentukan

Dengan menggunakan koleksi “student_grades”, mari kita buat kondisi untuk menghapus semua nilai yang kurang dari atau sama dengan 50 dari dokumen berikut

Dokumen yang Tidak Dimodifikasi

Bisakah kita menggunakan array di mongodb?

Dokumen yang Dimodifikasi

{ $pull: { <field1>: <value|condition>, .. } }
_3

Hasil

Bisakah kita menggunakan array di mongodb?

Kondisi yang ditentukan ({$lte. 50}) menghapus item apa pun yang kurang dari atau sama dengan 50 di bidang larik “nilai”.

Hapus Item dari Array Dokumen

Dalam contoh ini, kita akan menggunakan koleksi “student_grades” untuk menghapus semua nilai yang kurang dari atau sama dengan 50 di kolom array “grades” di semua dokumen dalam koleksi

Koleksi yang Tidak Dimodifikasi

Bisakah kita menggunakan array di mongodb?

Koleksi yang Dimodifikasi

{ $pull: { <field1>: <value|condition>, .. } }
_4

Hasil

Bisakah kita menggunakan array di mongodb?

Keluaran di atas menunjukkan kepada kita bahwa nilai apa pun yang kurang dari atau sama dengan 50 telah dihapus dari bidang larik "nilai" di semua dokumen dalam koleksi "tingkat_student"

Apakah MongoDB mendukung array?

Salah satu manfaat model skema kaya MongoDB adalah kemampuan untuk menyimpan array sebagai nilai kolom dokumen . Menyimpan array sebagai nilai bidang memungkinkan Anda memodelkan hubungan satu-ke-banyak atau banyak-ke-banyak dalam satu dokumen, alih-alih di seluruh koleksi terpisah seperti yang mungkin Anda lakukan dalam database relasional.

Bagaimana cara menggunakan array di MongoDB?

Bekerja dengan Array di MongoDB .
pengantar. .
Buat dan Kueri Dokumen. .
Tambahkan Elemen Array. .
Perbarui Elemen Array. .
Hapus Elemen Array. .
Tambahkan Bidang Baru ke semua Objek di Larik. .
Perbarui Elemen Array Tertentu Berdasarkan Suatu Kondisi. .
Kesimpulan

Bagaimana cara mendeklarasikan array di MongoDB?

Kita dapat mendefinisikan array adalah sebagai berikut. {< bidang larik >. { 1. Bidang larik. Bidang array didefinisikan sebagai nama bidang koleksi tempat kita membuat atau menentukan nilai array.

Bisakah Anda memiliki array objek di MongoDB?

Direkomendasikan untuk menggunakan larik objek saat mendesain database MongoDB . Larik objek memungkinkan Anda untuk menyimpan beberapa item dalam satu bidang, dan memungkinkan Anda untuk dengan mudah menambah, menghapus, dan memodifikasi item individual di dalam larik.