Di MongoDB, Anda dapat menggunakan $push
operator untuk menambahkan nilai ke array.
Operator ini dapat digunakan dengan berbagai modifier, salah satunya adalah $position
pengubah. $position
modifier memungkinkan Anda untuk menentukan posisi dalam larik yang ingin Anda sisipkan nilai baru.
Tambahkan Nilai ke Awal Array
Misalkan kita memiliki koleksi berikut:
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Topi" , "ukuran" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "M", "L" ] }Dan misalkan kita ingin menambahkan nilai ke awal array di dokumen 3.
Kita bisa melakukan ini:
db.products.update( { _id: 3 }, { $push: { sizes: { $each: [ "S" ], $position: 0 } } } )
Sekarang mari kita periksa kembali koleksinya:
db.products.find()
Hasil:
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Topi" , "ukuran" :[ "S", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "S", "M", "L" ] }Array berbasis nol, jadi
position: 0
menambahkan nilai sebagai elemen pertama dalam array.Tambahkan Nilai ke Tengah Array
Misalkan kita ingin menambahkan nilai
M
untuk mendokumentasikan 2, dan kami ingin berada di antaraS
danL
.Inilah cara kami melakukannya:
db.products.update( { _id: 2 }, { $push: { sizes: { $each: [ "M" ], $position: 1 } } } )
Sekarang mari kita periksa kembali koleksinya:
db.products.find()
Hasil:
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "XL" ] }{ "_id" :2, "prod" :"Topi" , "ukuran" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "sizes" :[ "S", "M" , "L" ] }Kami menggunakan
$position: 1
, karena itulah posisi yang kita inginkanM
untuk pergi (yaitu posisi kedua).Nilai Negatif
Anda juga dapat memberikan nilai negatif sebagai posisi. Saat Anda melakukan ini, nilai dimasukkan pada posisi negatif yang ditentukan, menghitung mundur dari akhir.
Misalkan kita ingin menyisipkan
L
di antaraM
danXL
dalam dokumen 1.Inilah cara kami melakukannya dengan menggunakan posisi negatif:
db.products.update( { _id: 1 }, { $push: { sizes: { $each: [ "L" ], $position: -1 } } } )
Periksa hasilnya:
db.products.find()
Hasil:
{ "_id" :1, "prod" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "prod" :"Topi", "ukuran" :[ "S", "M", "L", "XL" ] }{ "_id" :3, "prod" :"Cap", "ukuran" :[ "S" , "M", "L" ] }Dengan posisi indeks negatif, jika Anda menentukan beberapa elemen di
$each
array, elemen terakhir yang ditambahkan berada di posisi yang ditentukan dari akhir.