MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongodDB $ zieht nur ein Element aus dem Array

Nein, so etwas gibt es derzeit nicht. Viele Leute haben die Funktion bereits angefordert und Sie können sie in mongodb Jira verfolgen . Soweit Sie sehen können, ist es nicht gelöst und auch nicht geplant (was bedeutet, dass Sie in naher Zukunft kein Glück haben).

Die einzige Option ist die Verwendung von Anwendungslogik, um dies zu erreichen:

  1. Finden Sie das gewünschte Element mit userTags wie foo
  2. userTags durchlaufen und ein foo daraus entfernen
  3. Aktualisiere dieses Element mit neuen userTags

Denken Sie daran, dass diese Operation die Atomizität unterbricht, aber da Mongo keine native Methode dafür bereitgestellt hat, werden Sie die Atomizität in irgendeiner Weise unterbrechen.

Ich habe eine alternative Lösung in die neue Antwort verschoben, da sie diese Frage nicht beantwortet, aber einen der Ansätze zum Refactoring bestehender Schemas darstellt. Es wurde auch so groß, dass es viel größer wurde als die ursprüngliche Antwort.