pushOrModify como operador para subdocumento mongo

O que estou tentando fazer é que, se existir subdoc, atualize-o e, caso contrário, empurre o novo subdoc por apenas um método.

Primeiro, encontre{ name: "SweetTown" } e depois,

E seBob existe, quero mudar sua reputação para30:

Town collection
{ name: "SweetTown", residents: [{ name: "Bob", reputation: 20 }] }

deveria estar

{ name: "SweetTown", residents: [{ name: "Bob", reputation: 30 }] }

Ou não, empurre{ name: "Bob", reputation: 30 } pararesidents.

Town collection
{ name: "SweetTown", residents: [{ name: "Alice", reputation: 140 }] }

deveria estar

{ name: "SweetTown", residents: [
  { name: "Alice", reputation: 140 },
  { name: "Bob", reputation: 30 }
]}

Eu pesquisei muito sobre isso e encontrei algumas maneiras que poderiam ser a solução como$addToSet, $push com$ne ouupsert opção.

Mas não consegui misturá-los adequadamente para resolver esse problema. Como posso fazer isso funcionar?