Rilis 2.4 dari MongoDB menyediakan opsi lain di sini, yaitu untuk menjaga bidang array dalam urutan yang diurutkan saat Anda memperbaruinya dengan menggunakan $sort
pengubah.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Ini akan menghasilkan elemen myarray
bidang dokumen yang diperbarui untuk disimpan diurutkan berdasarkan timestamp
. naik .
Jika Anda hanya ingin mengurutkan elemen yang ada di tempatnya tanpa menambahkan yang baru, gunakan $each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});