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}
}
}
});