La version 2.4 de MongoDB fournit une autre option ici, qui consiste à conserver le champ de tableau dans un ordre trié lorsque vous le mettez à jour en utilisant le $sort
modificateur.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Cela se traduira par les éléments du myarray
champ du document mis à jour à stocker trié par timestamp
croissant .
Si vous souhaitez simplement trier les éléments existants en place sans en ajouter de nouveaux, utilisez $each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});