sql >> Databáze >  >> NoSQL >> MongoDB

Jak změnit pořadí pole pomocí MongoDB?

Jak řekl @blakes-seven, máte dva způsoby, jak to udělat:

Uchopení, aktualizace a vkládání

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

Přímá aktualizace (pokud máte obrázek na klientovi a znáte indexy), pomocí $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/

Domnívám se však, že byste měli přepracovat způsob, jakým ukládáte své obrázky, pomocí příkladu virtuálního řazení:

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

Tímto způsobem můžete své obrázky objednávat pomocí indexu virtuální objednávky, aktualizovat je pouze pomocí _id nebo aktualizovat celou kolekci změnou pořadí všech obrázků2, vypuštěním nebo nahrazením obrázku atd.




  1. Mongoid:najděte přes pole id

  2. Odstranění konkrétních položek z pole pomocí MongoDB

  3. Jaká je výchozí cesta k databázi pro MongoDB?

  4. Přehled Atlasu MongoDB:Část první