#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. Это правильно. У меня были некоторые другие проблемы с данными, которые не позволяли мне обновлять. Ценю ваш ответ!