A versão 2.4 do MongoDB oferece outra opção aqui, que é manter o campo array em ordem conforme você o atualiza usando o
$sort
modificador. db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Isso resultará nos elementos do
myarray
campo do documento atualizado a ser armazenado ordenado por timestamp
crescente . Se você quiser apenas ordenar os elementos existentes sem adicionar novos, use
$each: []
:db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});