4 Stimmen

MongoDB entfernt ein Unterdokumentdokument aus einem Unterdokument.

Ich verwende den 10gen C#-Treiber für MongoDB und möchte ein Subdokument aus einem Subdokument entfernen. Ich weiß nicht, wie ich das machen soll.

Hier ist ein Beispiel, das meinem Dokument ähnelt

{
  "_id": "binary_stuff",
  "Name": "MeineAnwendung",
  "Einstellungen": [
    {
      "_id": "binary_stuff",
      "Schlüssel": "ImportVerzeichnis",
      "Wert": "C:\data",
      "Überschreibungen": [{
             "_id": "binary_stuff",
             "Name": "PathDirectory",
             "Wert": "C:\anotherData"
       }]
    },
}

Und ich möchte die Überschreibung löschen, deren Name PathDirectory ist. Hier ist die Abfrage, die ich geschrieben habe, aber sie funktioniert nicht. Ich habe keinen Fehler.

var abfrage = Query.And(Query.EQ("_id", anwendungsId), Query.EQ("Einstellungen.Schlüssel", "ImportVerzeichnis"), Query.EQ("Einstellungen.$.Überschreibungen.Name", "PathDirectory"));
Führen(sie die Datenbank aus => Datenbank.Anwendungen().Remove(abfrage));

Danke für jede Hilfe. John

8voto

Andrei Andrushkevich Punkte 9835

Sie sollten die $pull-Operation verwenden, um ein Element aus einem Array zu löschen.

        var query = Query.And(Query.EQ("_id", applicationId),
                         Query.EQ("Settings.Key",  "ImportDirectory"));
        var update = Update.Pull("Settings.$.Overrides", new BsonDocument(){
            { "Name", "PathDirectory" }
        });
        database.Applications().Update(query, update);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X