Save () не сохраняет вложенные свойства

#mongodb #mongoose

#mongodb #мангуст

Вопрос:

Я новичок в mongo. Мне нужно обновить одно вложенное поле в модели MongoDB. Это мой код: —

 const employee = await empModel.searchData(Query);

countryArray.push({lang: 'eng', result 100});

countryArray.push({lang: 'german', result 99});

employee[0].country = countryArray;

employee[0].markModified('country');

employee[0].save();

  

Схема empModel:

 onst mongoSchema = new Schema({
  empId: [{
    type: Schema.Types.ObjectId
  }],
  country:[{
    lang:String,
    result:Number
  }],
  projectId: {
    type: String,
    required: true
  }
});
  

Комментарии:

1. Что такое countryArray ? Какое поле вы хотите обновить? Не могли бы вы объяснить, что вам нужно

2. мне нужно обновить поле ‘country’ на ‘countryArray’. countryArray — это массив с обновленным значением, которое мне нужно сохранить в базе данных

3. Вы использовали countryArray поле в схеме? И если вы хотите обновить документ, тогда используйте простой запрос use update вместо поиска и последующего обновления..

4. У меня есть поле country, но мне нужно заменить значение поля country значением countryArray

5. Также покажите код для searchData функции

Ответ №1:

Используйте простой запрос на обновление вместо поиска и обновления

 static async updateData(query, countryArray) {
  const updateData= await this.update(query, { $set: { country: countryArray }});  
  console.log(updated successfully')
  return 'Updated successfully'
}

const countryArray = []
countryArray.push({lang: 'eng', result 100})
countryArray.push({lang: 'german', result 99})
const update = await empModel.updateData(Query, countryArray)