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 antara S dan L .
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 inginkan M 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 antara M dan XL 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.