MongoDB: sub-documento de upsert

Tenho documentos que se parecem com isso, com um índice exclusivo embars.name:

{ name: 'foo', bars: [ { name: 'qux', somefield: 1 } ] }

. Eu quero atualizar o sub-documento onde{ name: 'foo', 'bars.name': 'qux' } e$set: { 'bars.$.somefield': 2 }ou crie um novo sub-documento com{ name: 'qux', somefield: 2 } sob{ name: 'foo' }.

É possível fazer isso usando uma única consulta com upsert ou terei que emitir duas consultas separadas?

Palavras-chave:'upsert' em um documento incorporado (sugere alterar o esquema para ter o identificador de sub-documento como a chave, mas isso é de dois anos atrás e eu estou me perguntando se há soluções melhores agora.)

questionAnswers(3)

yourAnswerToTheQuestion