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

Mongoose:tildel felt af typen 'array of Strings'

Det er ikke veldokumenteret, men når du manipulerer array-felter, skal du sørge for, at du udløser Mongooses feltændringsdetektion, så den ved, at arrayet er blevet ændret og skal gemmes.

Direkte indstilling af et array-element via dets indeks i firkantede parenteser markerer det ikke som ændret, så du skal manuelt markere det ved hjælp af markModified :

user.emails[0] = email1;
user.markModified('emails');

Eller du kan gøre det på én gang ved at bruge set metode for Mongoose-arrayet:

user.emails.set(0, email1);

Overskrivning af hele arrayfeltet udløser det også, hvorfor dette virker for dig:

user.emails = [email1, email2];

samt:

user.emails = [email1];
user.emails[1] = email2;

Hvilket betyder, at dette også virker:

user.emails = [];
user.emails[0] = email1;
user.emails[1] = email2;



  1. Mongo docker-billede kører ikke script efter oprettet

  2. MongoDB Atlas-godkendelse mislykkedes på Python

  3. MongoDB:indsæt ved dubletnøgleopdatering

  4. Node.js + MongoDB:indsæt en og returner det nyligt indsatte dokument