В версии 2.4 MongoDB предусмотрена еще одна опция, которая заключается в сохранении поля массива в отсортированном порядке при его обновлении с использованием модификатора $sort
.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Это приведет к тому, что элементы поля myarray
обновленного документа будут сохранены в порядке возрастания timestamp
.
Если вы просто хотите отсортировать существующие элементы без добавления новых, используйте$each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});