MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để thay đổi thứ tự của mảng với MongoDB?

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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để thêm json vào một mảng lồng nhau của tài liệu mongodb bằng Spring?

  2. Hợp nhất hai trường mảng trong mongoDB

  3. id đối tượng nodejs mongodb thành chuỗi

  4. Lập mô hình cho lược đồ bạn bè trong mongoose?

  5. Truy vấn tổng hợp trung bình Mongo không có nhóm