Обновление схемы в мангусте схемы

#javascript #mongodb #mongoose #mongoose-schema #nested-documents

Вопрос:

Пытался обновить поле во вложенном массиве в моем документе.

Например, пример схемы здесь..

 childSchema = new Schema ( {
foo2 : String,
bar2 : String,
foobar : String
) };
 

В рамках этой схемы

 parentSchema = new Schema ( {
foo1 : String,
bar1 : String,
nested : [childSchema]
)};
 

Если бы я хотел обновить bar2 (childSchema) на основе строки, соответствующей foo2, как бы я это сделал?

Я попробовал следующее,

 parentSchema.childSchema.updateOne( { 'nested.foo2' : 'string-that-matches' }, { $set: { 'nested.$.bar2' : 'new-string-for-bar2' } } )
 

Обычно я получаю ошибку

 TypeError: Cannot read property amp;#39;updateOneamp;#39; of undefined
 

Раньше у меня не было такой детской схемы, она была просто сделана в родительской схеме. Это было больше для тестирования при их разделении.

Мне жаль, если я неправильно отформатировал этот вопрос, и, очевидно, я пытался создать макет схемы из моей реальной вещи. Я решил, что в моем запросе есть что-то большее, чем настройка.

Спасибо!

Ответ №1:

parentSchema достаточно ли этого обновления

 parentSchema.updateOne( { 'nested.foo2' : 'string-that-matches' }, { $set: { 'nested.$.bar2' : 'new-string-for-bar2' } } )
 

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

1. Это правильно. У меня были некоторые другие проблемы с данными, которые не позволяли мне обновлять. Ценю ваш ответ!