Giống như @ blakes-Seven đã nói, bạn có hai cách để làm điều đó:
Nắm bắt, cập nhật và đẩy
db.images.find({ _id: '' }, { images : 1 })
.then(function(img) {
var tmpImg = img.images[0];
img.images[0] = img.images[1];
img.images[1] = tmpImg;
db.images.update({ _id: img._id }, { $set: { images: img.images } });
})
Đang cập nhật trực tiếp (nếu bạn có hình ảnh trên máy khách và biết các chỉ mục), sử dụng $ position
db.images.update({ _id: '' }, { $push: { images: { $each: ['img2'] }, $position: 0 } } } )
.then(function() {
db.images.update({ _id: '' }, {$unset: {'images.2': 1}})
});
https://docs.mongodb.org/manual/reference/operator/update/position/
Tuy nhiên, tôi nghĩ bạn nên thiết kế lại cách bạn lưu trữ hình ảnh của mình, bằng cách sử dụng đặt hàng ảo:
{
images: [
{ base64: 'img1', order: 0, _id: 'img1' },
{ base64: 'img2', order: 1, _id: 'img2' },
{ base64: 'img3', order: 2, _id: 'img3' }
]
}
Bằng cách này, bạn có thể sắp xếp hình ảnh của mình bằng chỉ mục thứ tự ảo, chỉ cập nhật chúng bằng _id hoặc cập nhật toàn bộ bộ sưu tập bằng cách thay đổi thứ tự của tất cả img2, bỏ hoặc thay thế hình ảnh, v.v.