У меня есть документы, которые выглядят примерно так: уникальный индекс на bars.name:
{ name: 'foo', bars: [ { name: 'qux', somefield: 1 } ] }
. Я хочу либо обновить поддокумент, где { name: 'foo', 'bars.name': 'qux' } и $set: { 'bars.$.somefield': 2 }, либо создать новый поддокумент с { name: 'qux', somefield: 2 } под { name: 'foo' }.
Можно ли сделать это, используя один запрос с upsert, или мне придется выпустить два отдельных?
Связано: 'upsert' во встроенном документе (предлагает изменить схему, чтобы иметь идентификатор поддокумента в качестве ключа, но это от двух лет назад и мне интересно, есть ли сейчас лучшие решения.)