MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose:задайте поле от тип „масив от низове“

Не е добре документиран, но когато манипулирате полетата на масива, трябва да сте сигурни, че задействате откриването на промяна на полето на Mongoose, така че той да знае, че масивът е бил модифициран и трябва да бъде запазен.

Директното задаване на елемент от масив чрез неговия индекс в квадратни скоби не го маркира като модифициран, така че трябва ръчно да го маркирате с флаг чрез markModified :

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

Или можете да го направите наведнъж, като използвате set метод на масива Mongoose:

user.emails.set(0, email1);

Презаписването на цялото поле на масив също го задейства, поради което това работи за вас:

user.emails = [email1, email2];

както и:

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

Което означава, че това също работи:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Планировчик на събития (cronjob) в MongoDB?

  2. Mongodb v4.0 Transaction, MongoError:Номера на транзакции са разрешени само за член на набор от реплика или mongos

  3. Mongoose:Как да актуализирам съществуващ елемент в масив?

  4. Не може да се свърже с алтернативна Mongo DB в приложението Meteor

  5. MongoDB и Mongoose:Вложен масив от референтни идентификатори на документи