Heim >Web-Frontend >js-Tutorial >Wie entferne ich ein bestimmtes Objekt aus einem Array in MongoDB?

Wie entferne ich ein bestimmtes Objekt aus einem Array in MongoDB?

DDD
DDDOriginal
2024-11-02 07:26:291043Durchsuche

How to Remove a Specific Object from an Array in MongoDB?

MongoDB: Entfernen eines Objekts aus einem Array

Problem:

Wie extrahieren Sie in MongoDB ein bestimmtes Objekt? aus einem in ein Dokument eingebetteten Array? Im Beispieldokument möchten wir das Objekt mit der ID: 23 aus dem Items-Array entfernen.

Lösung:

Um dies zu erreichen, verwenden Sie den $pull-Operator mit eine spezifischere Abfrage, um das gewünschte Objekt innerhalb des Arrays abzugleichen.

MongoDB-Abfrage:

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true // Multi
);

Erklärung:

  • $pull-Operator: Wird verwendet, um ein Element aus einem Array zu entfernen.
  • { items: { id: 23 } }: Geben Sie das zu entfernende verschachtelte Objekt an, indem Sie dessen spezifisches Feld abgleichen.
  • Upsert: Auf „false“ setzen, um die Erstellung eines neuen Dokuments zu verhindern, wenn die Aktualisierung mit keinem vorhandenen Dokument übereinstimmt.
  • Multi: Auf „true“ setzen, um die Aktualisierung auf mehrere übereinstimmende Dokumente anzuwenden (obwohl es nur eine Übereinstimmung geben sollte). in diesem Fall).

Node.js/Mongoose:

In Mongoose können Sie die folgende Abfrage verwenden:

<code class="javascript">MyModel.findOneAndUpdate(
  { '_id': '5150a1199fac0e6910000002' },
  { $pull: { items: { id: 23 } } },
  { multi: true }
);</code>

Hinweis: MongoDB 3.6 unterstützt auch den $elemMatch-Operator in Verbindung mit $pull für komplexere Filterung innerhalb von Arrays.

Das obige ist der detaillierte Inhalt vonWie entferne ich ein bestimmtes Objekt aus einem Array in MongoDB?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn