MongoDB: Unterdokument aufsetzen

Ich habe Dokumente, die ungefähr so aussehen, mit einem eindeutigen Indexbars.name:

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

. Ich möchte entweder das Unterdokument wo aktualisieren{ name: 'foo', 'bars.name': 'qux' } und$set: { 'bars.$.somefield': 2 }oder erstellen Sie ein neues Unterdokument mit{ name: 'qux', somefield: 2 } unter{ name: 'foo' }.

Ist es möglich, dies mit einer einzigen Abfrage mit Upsert zu tun, oder muss ich zwei separate ausgeben?

Verbunden:'upsert' in ein eingebettetes Dokument (schlägt vor, das Schema so zu ändern, dass die Kennung des Unterdokuments als Schlüssel verwendet wird. Diese stammt jedoch aus der Zeit vor zwei Jahren und ich frage mich, ob es jetzt bessere Lösungen gibt.)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage