2.4-versionen av MongoDB ger ett annat alternativ här, vilket är att hålla arrayfältet i sorterad ordning när du uppdaterar det genom att använda $sort
modifierare.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Detta kommer att resultera i elementen i myarray
fältet i det uppdaterade dokumentet som ska lagras sorterat efter stigande timestamp
.
Om du bara vill sortera de befintliga elementen på plats utan att lägga till några nya, använd $each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});