MongoDB从子文档中删除子文档文档

时间:2011-07-05 14:10:12

标签: c# mongodb

我为MongoDB使用10gen C#驱动程序,我想从子文档中删除一个子文档。我不知道怎么做。

以下是我的文档

的示例
{
  "_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));

感谢您的帮助。 约翰

1 个答案:

答案 0 :(得分:8)

你应该使用$ 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);