sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan ændrer man rækkefølgen af ​​array med MongoDB?

Som @blakes-seven sagde, har du to måder at gøre det på:

Få fat, opdaterer og skubber

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 } });
})

Opdaterer direkte (hvis du har billedet på klienten og kender indekserne), ved hjælp af $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/

Jeg synes dog, at du skal redesigne den måde, du gemmer dine billeder på, ved at bruge en virtuel bestilling for eksempel:

{
  images: [
    { base64: 'img1', order: 0, _id: 'img1' },
    { base64: 'img2', order: 1, _id: 'img2' },
    { base64: 'img3', order: 2, _id: 'img3' }
  ]
}

På denne måde kan du bestille dine billeder ved hjælp af et virtuelt rækkefølgeindeks, opdatere dem ved kun at bruge _id, eller opdatere hele samlingen ved at ændre rækkefølgen af ​​alle img2, slette eller erstatte et billede osv.




  1. Transparent Database Failover til dine applikationer

  2. Konfigurer Redis Session State på Azure

  3. Golang + MongoDB indlejret type (indlejring af en struktur i en anden struktur)

  4. Hvordan installeres tidligere version af mongodb med homebrew?