sql >> Database >  >> NoSQL >> MongoDB

Update MongoDB-verzameling met $toLower

MongoDB heeft geen concept van $toLower als een opdracht. De oplossing is om een ​​grote for . uit te voeren loop over de gegevens en geef de updates afzonderlijk uit.

U kunt dit in elke driver of vanuit de shell doen:

db.myCollection.find().forEach(
  function(e) {
    e.UserName = e.UserName.toLowerCase();
    db.myCollection.save(e);
  }
)

Je kunt de save ook vervangen door een atomaire update:

db.myCollection.update({_id: e._id}, {$set: {UserName: e.UserName.toLowerCase() } })

Nogmaals, je zou dit ook vanuit een van de stuurprogramma's kunnen doen, de code zal erg op elkaar lijken.

EDIT:Remon brengt een goed punt naar voren. De $toLower commando bestaat als onderdeel van het aggregatieraamwerk, maar dit heeft niets te maken met updaten. De documentatie voor het updaten is hier.



  1. afsluiten redis-server vanaf de opdrachtregel

  2. Introductie van opzoekgrafieken in MongoDB

  3. Spring Data MongoDB:projecties en aggregaties

  4. Redis-replicatie gebruiken op verschillende machines (multimaster)