MongoDB удалить документ вложенного документа из вложенного документа - PullRequest
4 голосов
/ 05 июля 2011

Я использую 10gen C # драйвер для MongoDB, и я хотел бы удалить вложенный документ из вложенного документа.Я не знаю, как это сделать.

Вот пример того, как выглядит мой документ

{
  "_id": "binary_stuff",
  "Name": "MyApplication",
  "Settings": [
    {
      "_id": "binary_stuff",
      "Key": "ImportDirectory",
      "Value": "C:\data",
      "Overrides": [{
             "_id": "binary_stuff",
             "Name": "PathDirectory",
             "Value": "C:\anotherData"
       }]
    },
}

И я хочу удалить переопределение, имя которого равно PathDirectory.Вот запрос, который я написал, но он не работает.У меня нет ошибок.

var query = Query.And(Query.EQ("_id", applicationId), Query.EQ("Settings.Key", "ImportDirectory"), Query.EQ("Settings.$.Overrides.Name", "PathDirectory"));
Run(database => database.Applications().Remove(query));

Спасибо за любую помощь.John

1 Ответ

8 голосов
/ 05 июля 2011

Вы должны использовать операцию $ pull для удаления элемента из массива.

        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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...