Версията 2.4 на MongoDB предоставя друга опция тук, която е да запазите полето на масива в сортиран ред, докато го актуализирате, като използвате $sort
модификатор.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Това ще доведе до елементите на myarray
полето на актуализирания документ, което да се съхранява, сортирано по възходящ timestamp
.
Ако просто искате да сортирате съществуващите елементи на място, без да добавяте нови, използвайте $each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});