La versión 2.4 de MongoDB proporciona otra opción aquí, que es mantener el campo de la matriz en orden a medida que lo actualiza usando $sort
modificador.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Esto dará como resultado los elementos de myarray
campo del documento actualizado que se almacenará ordenado de forma ascendente timestamp
.
Si solo desea ordenar los elementos existentes en su lugar sin agregar elementos nuevos, use $each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});