MongoDB memiliki $min
operator yang memungkinkan Anda memperbarui nilai bidang hanya jika nilai yang ditentukan lebih kecil dari nilai bidang saat ini.
Dengan kata lain, jika $min
nilai kurang dari nilai saat ini dalam dokumen, $min
nilai digunakan. Jika tidak, nilai dokumen tetap tidak berubah.
Contoh
Misalkan kita memiliki koleksi yang disebut golf
dengan dokumen berikut:
{ "_id" : 1, "strokes" : 70 }
Dan bayangkan kami memperbarui dokumen setelah setiap pertandingan golf dengan skor terbaru. Dalam hal ini, kami hanya ingin strokes
bidang yang akan diperbarui jika skor terbaru kami lebih rendah dari skor kami sebelumnya.
Dalam hal ini kita bisa menggunakan $min
operator untuk mencapai hasil tersebut.
Contoh:
db.golf.update(
{ _id: 1 },
{ $min: { strokes: 64 } }
)
Keluaran:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Pesan ini memberi tahu kami bahwa satu dokumen cocok dan telah diperbarui.
Yuk cek lagi koleksinya.
db.golf.find()
Hasil:
{ "_id" : 1, "strokes" : 64 }
Kita dapat melihat bahwa strokes
bidang telah diperbarui dengan nilai baru. Ini karena 64 lebih rendah dari nilai sebelumnya 70.
Ketika Nilai Lebih Tinggi
Ketika nilai ditentukan dengan $min
lebih tinggi dari nilai yang ada dalam dokumen, tidak ada yang diperbarui.
Contoh:
db.golf.update(
{ _id: 1 },
{ $min: { strokes: 72 } }
)
Keluaran:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
Kami dapat melihat dari pesan bahwa tidak ada yang diperbarui.
Yuk cek lagi koleksinya.
db.golf.find()
Hasil:
{ "_id" : 1, "strokes" : 64 }
Kami dapat melihat bahwa nilainya tetap 64, meskipun kami mencoba memperbaruinya menjadi 72. Hal ini diharapkan, karena kami menggunakan $min
.
Tanggal
Anda dapat menggunakan $min
pada bidang tanggal.
Misalkan kita memiliki collection
disebut spesies dengan dokumen berikut:
{ "_id" : 1, "firstDiscovered" : ISODate("2000-01-01T00:00:00Z") }
Mari kita coba perbarui tanggal dengan tanggal yang lebih lambat dari tanggal saat ini di dokumen.
db.species.update(
{ _id: 1 },
{ $min: { firstDiscovered: new Date("2001-01-01") } }
)
Di sini, kami mencoba memperbarui tahun dari 2000
ke 2001
. Mengingat tanggal baru lebih lambat dari yang sudah ada, kami mendapatkan yang berikut:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
Tidak ada yang diperbarui.
Yuk cek koleksinya:
db.species.find()
Hasil:
{ "_id" : 1, "firstDiscovered" : ISODate("2000-01-01T00:00:00Z") }
Seperti yang diharapkan, nilai tanggal yang sama tetap ada.
Sekarang coba perbarui dengan tanggal yang lebih awal.
db.species.update(
{ _id: 1 },
{ $min: { firstDiscovered: new Date("1999-01-01") } }
)
Keluaran:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kita dapat melihat dari pesan bahwa dokumen telah diperbarui.
Mari kita periksa.
db.species.find()
Hasil:
{ "_id" : 1, "firstDiscovered" : ISODate("1999-01-01T00:00:00Z") }
Tanggal diperbarui seperti yang diharapkan.