Phiên bản 2.4 của MongoDB cung cấp một tùy chọn khác ở đây, đó là giữ trường mảng theo thứ tự được sắp xếp khi bạn cập nhật nó bằng cách sử dụng $sort
bổ ngữ.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Điều này sẽ dẫn đến các phần tử của myarray
trường của tài liệu cập nhật sẽ được lưu trữ được sắp xếp theo timestamp
tăng dần .
Nếu bạn chỉ muốn sắp xếp các phần tử hiện có tại chỗ mà không thêm bất kỳ phần tử mới nào, hãy sử dụng $each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});