La versione 2.4 di MongoDB fornisce un'altra opzione qui, che consiste nel mantenere il campo dell'array in ordine mentre lo aggiorni utilizzando $sort
modificatore.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Ciò risulterà negli elementi di myarray
campo del documento aggiornato da memorizzare ordinato per timestamp
crescente .
Se vuoi semplicemente ordinare gli elementi esistenti senza aggiungerne di nuovi, usa $each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});